![]() VISUAL CODE, PROCEDURE TO GENERATE A VISUAL CODE AND PROCEDURE TO DECODE A VISUAL CODE (Machine-tran
专利摘要:
Visual code, procedure for generating a visual code and procedure for decoding a visual code. Refers to a visual code that comprises a two-dimensional array of cells and a dark-colored frame surrounding the array. This comprises at least one of one or more groups of four cells in which they are arranged in two rows and two columns, and, in the visual code reading position, two of the cells, of the three that form the first row and the first column are each one of light color and/or dark color, and the remaining two are of different colors from each other, of a plurality of colors; one or more groups of three cells in which each group comprises three connected cells aligned or in an L shape, and each group has a single cell of light or dark color and the rest are of different colors from each other, of the plurality of colors ; in which the groups of cells encode information and/or implement a decoding error detection system. (Machine-translation by Google Translate, not legally binding) 公开号:ES2817652A1 申请号:ES201930860 申请日:2019-10-04 公开日:2021-04-07 发明作者:De Teruel Alcolea Pedro Enrique Lopez;Garcia Alberto Ruiz;Clemente Felix Jesús Garcia 申请人:Universidad de Murcia; IPC主号:
专利说明:
[0002] Visual code, procedure for generating a visual code and procedure for decoding a visual code [0004] The present description refers to a visual code for, for example, identifying elements or locating people or other assets, comprising a two-dimensional array of colored cells surrounded by a dark colored frame. [0006] The description also refers to a method for generating a visual code such as the one described, and to a method for decoding this visual code. It also refers to a computer program product for executing the visual code generation procedure, as well as a computer program product for executing the decoding procedure. [0008] The invention falls within the technologies for recognition and data support, more specifically recording media for use with machines. [0010] STATE OF THE PRIOR ART [0012] A visual code is a representation, for example, in print or in digital format, of certain information that can be automatically read by some type of image acquisition or capture device connected to a computer or electronic system (the acquisition device or image capture can be the computer or electronic system itself). As a carrier of a certain amount of information, its capacity is measured in the number of different combinations that can be stored and subsequently decoded. Therefore, its capacity can be simply quantized with a specific number N of stored bits. [0014] In general, these codes are used in a wide variety of applications both in industry and in commerce, that is, where the simple identification of any element on which a certain type of follow-up is to be carried out is required. With the wide range of potential applications that offers the possibility of having quick access to information linked to each code, which cover from the areas of commerce (stock control, quick calculation of the amount of a purchase, etc.) to healthcare ( immediate access to medical records, control of medical material, etc.), through security (access control, personnel identification, etc.), entertainment (video games, reality augmented), or industrial applications (control of manufacturing processes, traceability, etc.), it can be said that visual codes are already ubiquitous in almost any area of the economy and society. [0016] Historically, the first visual codes were one-dimensional (the popular barcodes, originally introduced in [US Patent 2,612,994 ( 1952) "Classifying apparatus and method"]), and were designed to be read by devices based on a specific optical technology that, At the time, it allowed the manufacture of simpler and cheaper sensors than cameras. These codes were quickly adopted by postal services in their early days, although they later spread rapidly in the field of product labeling and identification, both in commercial and commercial environments. industrial, generalizing the range of available sensors, which at present are usually already based on laser or conventional cameras. [0018] From the 90's, and precisely from the increasing availability of digital image acquisition devices that can be connected to, for example, a computer system, two-dimensional codes began to develop. A two-dimensional code, also called a matrix code, also represents the information in an easily detectable and visually decodable form automatically, but it has the advantage of being able to store more information in the same area. The best known visual code of this type is undoubtedly the QR code [US Patent 5,726,435 ( 1998) "Optically readable twodimensional code and method and apparatus using the same"]. [0020] The main characteristic of these QR codes is that they comprise two-dimensional binary matrices, in which each cell can take on a black or white color, and which allow different sizes (in number of cells) in order to offer a wide range of different capacities, being able to , in the higher resolution, even get to encode up to complete URLs, with several hundred bytes. [0022] Starting from the described QR codes, other similar two-dimensional codes have been proposed. Some of the most popular examples are AztecCodes, AR Codes, DataMatrix, EZ codes, used in commercial, industrial, transportation, video games or augmented reality, among many others. All these designs are strictly binary, the respective codes being based on the exclusive use of black and white, usually in the form of a matrix divided into square cells, without missing either. alternative designs, such as the circular one on which ShotCode is based. Very complete information on all of them can be obtained at, for example, [https://en.wikipedia.org/wiki/Barcode#Matrix_ ( 2D) _barcodes)]. [0024] An additional idea, exploited by later proposals, is the extension of the original idea of binary matrix two-dimensional codes to include colors other than pure black and white (for example, the primary colors red, green, and blue, or their complementary cyan, magenta and yellow) to increase the capacity of the codes, keeping the number of cells in them limited. One of the first examples in this regard would be [US Patent 2004/0182930 ( 2004) "Two dimensional code, methods and apparatuses for generating, displaying and reading the same"]. Subsequently, ["High Capacity Color Barcode ( HCCB)", G. Janke ( 2007)], designed by Microsoft, was another of the pioneers in incorporating color with the fundamental objective of increasing capacity. More recently, this same idea has also been exploited by the so-called JAB codes [“JAB Code: Colorful barcode against counter feiting", Fraunhofer SIT ( 2018)], in this case in the specific field of security and anti-fraud measures. [0026] In general, most codes that use color to increase capacity usually include a predetermined color palette, and have a certain area included in the code itself enabled for color auto-calibration purposes. In this sense, for example, the patent [US Patent 2014 / 0,270,511 A1, "Image fragmentation for distortion correction of color space encoded image" ( 2014)], which fundamentally provides the idea of being able to store much larger amounts of information than a few dozens of bits, including the possibility of fragmenting it into multiple frames, enables in each of the fragments an ad-hoc area to include the cell palette with all the colors used, to have it at all times as a reference in the time of decoding This embodiment of using certain fixed position cells to include color calibration information is the same as used in Spanish patent [ES 2,616,146 B2, "Method of detection and recognition of long-range and high-density visual markers ", ( 2018)], which uses only the four basic colors black, magenta, cyan and yellow, systematically placing them in a predetermined order in the corresponding cells in the four corners of each visual code, in a concrete implementation of two-dimensional color codes specifically designed to be read remotely by smartphones, tablets or other mobile devices, with the aim of guiding the visually impaired. [0027] This latest patent emphasizes the possibility of long-distance decoding, rather than increasing capacity. In addition, the main field of application of this patent is that of applications for the blind, and in particular, therefore, the detection and decoding of static codes, located in different places in the environment by means of smartphones or other types of mobile devices (for (example, places of interest in a city, transport stops, specific locations inside buildings, etc.). [0029] On the other hand, the vast majority of visual codes discussed up to this point introduce some form of redundancy in order to detect (and in some cases even self-correct) possible errors in the decoding process (parity bits, checksums, CRCs, codes polynomials, Reed Solomon, etc.). [0031] Other documents related to the invention are discussed below. [0033] Document EP2105868A1 discloses (paragraphs 0018-0035) a code composed of a plurality of cells arranged in a matrix, which is distinguished from the background using a square border. Cells can have different colors, densities, or luminances. The cells are distributed in blocks (aggregation of a plurality of cells) with specific starting patterns (facilitates the orientation of the code) and end, specific error correction blocks (in the outer cells, next to the border) and data blocks (forming a square with the inner cells). [0035] Document EP1443452A2 discloses (paragraphs 0030-0051) a code (Figure 1A) containing five patterns at specific locations to facilitate orientation thereof. Associated with these patterns are also the five color references necessary to decode the code. Similarly, (paragraphs 0074, 0092, 0109) the different predetermined location of the reference colors makes it possible to recognize the size of the code matrix. The rest of the matrix (paragraphs 0113-0148) maps entirely to data blocks made up of predetermined sets of cells. The grouping between cells of the same block is indicated by a constant value "86", and an error detection code is incorporated in each data block. [0037] Document US2009310874A1 discloses (paragraphs 0008-0016) a code in which specific cells are defined to facilitate both the orientation of the code and the color palette. (Figures 1 and 2). For example, in Figure 1, the cells in diagonally opposite corners use the same base color, and in the three adjacent cells in each corner, the rest of the colors are used, in a predetermined position, as a reference palette (six additional colors ). The rest of the cells are used for data. No reference is made to the incorporation of error detection codes. It focuses solely on the orientation and effective identification of the color palette. [0039] Document US2014270511A1 discloses (paragraphs 0048-0050, 0064-0070) a code that is framed in a black and white border to facilitate orientation, it also has a special frame (zebra) that makes it possible to determine the size of the cells. In some predetermined position (inside or outside said frame), special color reference cells are also included for calibration. The rest of the cells are used for data. There is a certain control of errors when transmitting the original CRC in a header (not located in the code), in order to be able to compare it with the CRC of the decoded information. [0041] Document US2007278303A1 discloses (paragraphs 0016, 0019) a code that incorporates a black and white configuration block in a predetermined location. The rest of the cells are considered data blocks, they are the same size as the configuration block, and they can use any color. There is a white frame, inside which are corner markers (by default) that delimit the code. Separator elements are incorporated to delimit the cells that make up each data block. Although it indicates (paragraphs 0024-0030) that the configuration block incorporates error correction type information as metadata, it does not detail this configuration. [0043] Document US2013092738A1 discloses (paragraphs 0019-0020) a code that is intended to be an alternative to black and white codes. In this case, the superposition of three overlapping levels with different colors is used, using error control information in each layer. [0045] Document EP2806377A2 discloses (paragraphs 0015-0031) a code comprising several cells: cells with the reference palette that are located on the periphery in a predetermined order, alternative black and white cells to position the code, and data cells . It does not refer to any type of error detection or control. [0046] Document EP2068117A2 discloses (paragraphs 0027-0031) a code that has differentiated sections to facilitate orientation, color reference, data and an additional section that could be used for error detection. [0048] In the documents analyzed, various documents have been found in which the code is circumscribed within a black and white frame. Likewise, there are documents in which the set of available cells is divided into blocks; and in which certain blocks are used to facilitate positioning using specific patterns (shapes, colors) in predetermined locations. In all cases, these particular blocks or cells have a predetermined arrangement (shape and / or color) and their only function is to indicate the orientation of the code. Only in one document (EP1443452) a different color combination is used to incorporate information about the palette and additionally inform about the size of the matrix. Regarding the error correction capacity of the analyzed codes, some have specific locations to display this information, others incorporate them together with the data information, and even in some cases the error information is previously transmitted in a header. This means that, in case of incorporating such information, it requires additional cells. [0050] Regarding the code orientation block, the documents analyzed describe different blocks to perform different functionalities. Thus, for example, they describe one or more blocks that have the ability to provide information about the orientation of the code and another different block (or more) to provide additional information related to error correction. [0052] Regarding the data blocks, some documents analyzed do not detail their structure, others use special separating elements, and others a specific sequence that is incorporated into the code. [0054] Consequently, there is a need for a visual code that at least partially solves the problems mentioned above. [0056] EXPLANATION OF THE INVENTION [0057] In a first aspect, a visual code is provided. The visual code comprises a two-dimensional array of cells and a dark colored frame surrounding the array of cells. The code is characterized by the fact that the cell array comprises at least one of: [0058] • one or more groups of four cells in which: [0059] or the cells are arranged in two rows and two columns, [0060] or in the visual code reading position, two of the cells in each group of four cells, of the three that make up the first row and the first column, are each a light color and / or a dark color, and the two remaining ones are of different colors from each other, of a plurality of colors that does not include the light color and the dark color; [0061] • one or more groups of three cells in which: [0062] or each group comprises three connected cells aligned or L-shaped, or each group of three cells has a single cell of a light color or a dark color and the rest of the cells are of different colors from each other, out of the plurality of colors; [0063] in which the groups of cells encode information and / or implement a redundancy system for the detection of errors in the decoding of the visual code. [0065] In this way, a multi-color visual code is achieved that can be decoded, from images taken with a suitable capture device, in a robust way under potentially problematic capture conditions, such as the increasing color degradations and loss of resolution that occur. by moving the code to be identified away from the optical sensor and / or significantly varying the lighting conditions. [0067] The code obtains a compromise between the ability to encode information and the robustness to be detected at potential long distances. This compromise is obtained by representing three different numerical values, each of which can be recognized using different interpretation procedures on the visual code. Thus, the first numeric value offers greater expressiveness (greater number of possible combinations) than the second numerical value and, in turn, the second numeric value offers a more informative value than the third numerical value. On the other hand, the robustness in the determination of the codes is inversely proportional to the capacity, with the second numerical value and the third numerical value supporting certain types of color degradation and other types of image noise incrementally better. Later, the three numerical values will be described in more detail. [0068] The code may be specially designed for industrial use; In particular, its main scope of application can be the identification of elements such as products, boxes or pallets in traceability control, although other alternative applications are not ruled out, such as, for example, the location of people, vehicles or any other type of mobile assets. Using this technology, it is feasible to read codes from several meters away, even for relatively small label print sizes (e.g. 5-10 cm per side), requiring only a direct line of sight between the code and the image capture device (for example, a camera connected to a computing device, using any wireless or wired communication means). In addition, it allows the simultaneous and computationally efficient reading of several codes in each captured image, thus allowing to cover a wide visual and work space with a single capture. It is, therefore, a more economical and flexible solution than other identification systems, such as wireless solutions (for example, RFID), which in addition to being more expensive may have fewer guarantees in poorly controlled environments, where there may be interference caused by elements such as water. or metal. [0070] The code shares certain design similarities with previous visual codes. In particular, the use of a two-dimensional array of cells, the assignment of different colors to them to increase the coding capacity, the dark frame (for example, black) on a light background (for example, white) to facilitate initial detection, together with the use of some type of redundancy for the detection of errors in the decoding process, they are particularly common characteristics in this type of codes. However, the main features provided are the elimination of color calibration cells, to increase the code capacity by keeping the number of available cells fixed; the existence of an internal consistency in the distribution of colors by groups of cells, which adds an additional error control mechanism (and therefore complementary) to the classic checksum; and the separate use of the chromatic / monochromatic information to obtain the three simultaneous numerical values (at least one of them), with the previously mentioned compromises between capacity and robustness. [0072] The codes described can be designed to be printed on a label, paper, adhesive, plastic, fabric, or any other type of support that can be attached by some means to any type of potentially mobile asset (products, materials, people, etc. ) on which you are interested in tracking or traceability. A fundamental characteristic One of these, then, is that they must be extremely robust to large lighting variations in the decoding scenario: typically, it is mainly the cameras that are statically located at key points of the application scenario, although there is no such thing as any. limitation in that these can also be detected by mobile cameras, such as cameras mounted on motorized trucks, but the codes will inevitably be located on mobile assets, and can therefore suffer large variations in the lighting they receive. This greatly affects how they are sensed by the corresponding image capture devices. The main design considerations of the proposed visual codes can therefore be fundamentally based on the idea of making the localization and subsequent decoding procedures as robust as possible to the image degradations usually produced in said conditions of mobility and constant lighting changes. [0074] In some examples, the encoding of the information can be done through at least one group of three cells, while the implementation of the redundancy system for error detection can be achieved through at least one group of four cells, although other variants are possible. For example, the quaternaries could be used to encode information, without the code implementing a redundancy system for error detection, or triples could be used to implement a redundancy system or be part of it (for example, together with some quatern). [0076] In some examples, the visual code may comprise a background of a light color external to the frame of a dark color, which facilitates the initial detection of the code in the captured image, to be later decoded. [0078] On the other hand, the width of the frame of a dark color can be, for example, equal to the width of a cell or it can be half the width of a cell. [0080] According to some examples, the visual code may comprise, at the visual code reading position, a group of four cells arranged in the upper left corner of the cell array. In addition, the visual code may comprise a group of three cells connected in an L shape at each of the remaining corners of the cell array. [0083] In this way, a visual code is achieved that is invariant to rotations, since it can be correctly determined which of its corners corresponds to the upper left, taking into account the fact that, of the four groups of three cells corresponding to the four corners, only the group of three cells that is part of the group of four cells can necessarily comprise two light and / or dark colors, compared to the remaining three corners that can only contain one light or dark cell. [0085] Therefore, this code orientation block based on the described group of four cells can combine in a single block the ability to provide information about the orientation of the code and additional information related to error correction (the latter functionality will be described further go ahead). The use of a group of four cells (quatern) different from the size of the data blocks (groups of three cells or triples), together with the distribution and particular color restrictions of the four cells of said block, provides this double functionality. This duplication of functions performed by the same set of cells makes it possible to reduce the number of cells required. [0087] Regarding data blocks, the possible use of blocks made up of three cells (triplets), without having to predefine their specific shape, apart from being useful to determine the proper orientation or reading position of the code, allows identifying which set of cells they belong to each block solely because of the specific distribution of the assigned colors. In addition, the restriction required so that a cell of each triple can only have the colors white or black (light or dark), and their possible determination of them by comparing them with the frame of a dark color and the background of a light color. , makes it possible to use the code in difficult lighting situations. With the additional use in the other two cells of each triple of the combination of two colors (with their particular restrictions), the information storage capacity for more favorable lighting situations is expanded. In addition, the use of colors, with the required restrictions, eliminates the need to incorporate a reference palette in the code, again allowing the information contained in the code to be expanded without the need to expand its size. [0089] Consequently, the particular configuration of the orientation control block that incorporates the redundancy codes (quaternary) and the specific configuration of colors of the data blocks (triples) provide, among others, the effects of increasing the capacity of information stored in the code for a fixed number of available cells. [0090] No specific cell reservation is required for error handling, or to enter a reference color palette. In addition, the possibility of using chromatic information (plurality of colors) and monochromatic information (light color, for example, white, and dark color, for example, black) independently but complementary, makes it possible for a code of this type to be used in different environments according to the lighting available in each case, thus expanding the storage capacity in the appropriate lighting situations. [0092] In some examples, the plurality of colors comprises at least three of the following colors: cyan, magenta, yellow, red, green, blue. For example, it can be any combination of colors, but it is possible to choose three colors that are as far apart as possible in the RGB cube, such as the combinations {cyan, magenta, yellow} or {red, green, blue}. The plurality of colors can also be represented in a gray scale. [0094] According to some examples, a dark color can be the color black. Actually, it can be any dark color, but the black (matte) color allows you to maximize the contrast with the environment or light background (for example, white), making it easier to detect the visual code. In either case, the light color can be a much lighter color than the dark frame. In addition, the dark color of the frame and the light color of the background can serve as a reference for a light and / or dark color used in some of the cells of the cell matrix. [0096] According to some examples, the cell array can have the same number of rows as columns, although it is not essential that the array is square. Rectangular, hexagonal, etc. structures can be designed that would have their specific cell groupings but follow the same coding procedure. [0098] In some examples, the information encoded by the groups of cells may comprise at least a first numerical value (also referenced as Code A) that is determined from values obtained from the cells of a light color or of a dark color and of the colored cells within the plurality of colors, of the groups of three cells. In this case, the decoding of this first numerical value depends on the correct chromatic identification of the colors of the plurality of colors, so that the decoding of the specific combination is less robust to possible chromatic degradations of the captured image of the visual code. [0099] In some examples, the information encoded by the groups of cells may comprise at least a second numerical value (also referenced as Code B) that is determined from values obtained from the cells based on their color on a gray scale, of groups of three cells. In this way, encoded information is obtained in the form of a second numerical value or Code B, whose decoding is robust to color degradation. [0101] In some examples, the information encoded by the groups of cells may comprise at least a third numerical value (also referenced as Code C) that is determined from values obtained from all the cells of a light color or a dark color of the cell array. This Code C can be provided only for the case in which the reading of Code A and Code B fails, as a hash, with a much smaller range than Codes A and B. It does not have a redundancy system for detection of errors in the decoding of the visual code, to control possible errors. Therefore, it can be used as a last resort in extreme lighting conditions, working only on a binary version (0/1) of the input image. [0103] According to some examples, the redundancy system for the detection of errors in the decoding of the visual code can be implemented from values obtained from the cells of a light color or of a dark color and of the colored cells within the plurality of colors, of the groups of four cells, to detect errors in the decoding of the first numerical value. [0105] In some examples, the redundancy system for the detection of errors in the decoding of the visual code can be implemented from values obtained from the cells of a light color or a dark color of the groups of four cells, to detect errors in the decoding. of the second numeric value. [0107] Therefore, the visual codes proposed can introduce a hierarchical scheme of checksums aimed at increasing the overall robustness and avoiding the possible acceptance of erroneous codes. This scheme can be provided by at least a group of four cells that can also be used to obtain the orientation of the visual code. This duplicity of functions performed by the same set of cells (quatern) allows reducing the number of cells required. [0110] In accordance with another aspect, a method is provided for generating a visual code as described above. The procedure includes: [0111] • obtain the number of rows and columns in the cell matrix; [0112] • determine the combination of one or more groups of three cells and / or one or more groups of four cells suitable for the obtained number of rows and columns of the cell matrix; [0113] • obtain the information to be encoded; [0114] • encode the information and / or implement the redundancy system for the detection of errors in the decoding of the visual code, based on the following configuration: or for each group of three cells of the determined combination: [0115] ■ assign a light color or a dark color to one of the cells of the group of three cells, defining a first parameter that takes a default value that depends on whether the color assigned to the cell is light color or dark color, and defining a second parameter that takes a predetermined value that depends on the cell, of the group of three cells, to which the light color or the dark color is assigned; [0116] ■ assign two colors of the plurality of colors, which does not include the light color and the dark color, to the two remaining cells of the group of three cells, defining a third parameter that takes a default value that depends on at least one color not chosen of the plurality of colors, and defining a fourth parameter that takes a predetermined value that depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors; [0117] or for each group of four cells of the given combination: [0118] ■ assign a light color and / or a dark color to two of the three cells that make up the first row and the first column of the group of four cells, defining a fifth parameter that takes a default value that depends on the cell that is not assigned a light color or a dark color, and defining a sixth parameter that takes a predetermined value that depends on the combination of light color and / or dark color assigned to the two cells; [0119] ■ assign two colors of the plurality of colors, which does not include the light color and the dark color, to the two remaining cells of the group of four cells, defining a seventh parameter that takes a default value that depends on at least one color not chosen of the plurality of colors, and defining an eighth parameter that takes a predetermined value that it depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors. [0121] In this way, a visual code is generated with the characteristics previously described. [0123] In some examples, the first parameter can take a value of 0 or 1 (although the values could be different) depending on whether the color assigned to the cell is the light color or the dark color, that is, the first parameter can take the value 0 if the assigned color is dark color (for example, black) or value 1 if the assigned color is light color (for example, white), or vice versa. This first parameter can be referred to as the monochromatic bit (bm) of the triple. [0125] On the other hand, the second parameter can take a value 0, 1 or 2 (although they can be others) depending on whether the cell to which the light color or the dark color is assigned, in the reading position of the code, is the first cell, second cell, or third cell in the group of three cells. Thus, the second parameter can take three different values, for example, 0 if the light color or the dark color is in the first cell of the group of three cells, 1 if it is in the second cell or 2 if it is in the third. cell (although the assignment of values can be any other). This second parameter can be referred to as monochromatic trit (tm) of the triple. [0127] Consequently, with this configuration between the bit and the monochromatic trit, a total of 2x3 = 6 different possibilities for each triple is achieved, that is, (bm, tm) = {(0,0), (1,0), ( 0.1), (1.1), (0.2), (1.2)}. Depending on the number of triples, a certain number of different possibilities will be achieved, which can be decoded even in conditions of absolute loss of color information, simply requiring that the light-colored or dark-colored cell can be correctly located in each triple. . Given the procedure described, this requirement will always be possible because each of the other two cells of the triple necessarily have a color of the plurality of colors (for example, cyan, magenta and yellow), and these colors can show a difference in value. medium gray greater than that shown by the light-colored or dark-colored element with its corresponding calibrated light or dark color, the latter obtained directly from the outside and inside of the dark-colored frame on a white background of the visual code. These described possibilities form the corresponding second numerical value ( Code B) described above, for the encoding of information. [0130] According to some examples, the third parameter can take a value 0, 1 or 2 (although they can be others) depending on the color not chosen from the plurality of colors. Thus, for example, if the plurality of colors includes cyan, magenta and yellow, the third parameter can take, for example, the value 0 if the discarded color is cyan, the value 1 if the discarded color is magenta, and the value 2 if the discarded color is yellow. Obviously any discarded value / color combination is acceptable. This third parameter can be referred to as chromatic trit (tc) of the triple. [0132] In some examples. the fourth parameter can take a value of 0 or 1 (although they can be others) depending on whether or not the order coincides with the pre-established order of the colors of the plurality of colors. Thus, for example, the fourth parameter can take the value 0 if the order matches the preset order (for example, cyan <magenta <yellow) or the value 1 if the order is not the same, or vice versa. [0134] Therefore, again 2x3 = 6 different possibilities are obtained for specific values (bc, tc) that, if the combinatorial induced by a certain number of triples (that is, groups of three cells) is used, additional possibilities are obtained which, furthermore, are completely independent of the monochromatic combinations (bm, tm) described above. The combination of the monochromatic information and the chromatic information gives rise to a high combinatorial of different combinations, each of which gives rise to the first numerical value ( Code A) described above, for the encoding of information. However, in this case, the decoding does depend on the correct chromatic identification of the colors of the plurality of colors, so the decoding of the specific combination is less robust to possible chromatic degradations of the image captured from the visual code. [0136] In some examples, the fifth parameter can take a value of 0, 1 or 2 (although they can be others) depending on whether the cell to which the light color is not assigned or the dark color, in the reading position of the code, is the first cell, the second cell, or the third cell of the three cells that make up the first row and the first column of the group of four cells. Thus, for example, if the cell that is not assigned the dark color or the light color is the first cell, the value of the fifth parameter can take the value 0, if it is the second cell it can take the value 1 and if it is the third cell it can take the value 2 (although the assignment [0139] value can be any other). The fifth parameter can be referred to as additional monochromatic trit (tmc) for each quatern or group of four cells. [0141] According to some examples, the sixth parameter takes a value {(0,0), (0,1), (1,0), (1,1)} (although they can be others) depending on the light color combination and / or dark color assigned to the two cells. Thus, if the combination is dark-dark the sixth parameter can take the value (0,0), if the combination is dark-light it can take the value (0,1), if the combination is light-dark it can take the value (1,0), or if the combination is light-light it can take the value (1,1), although the assignment of values can be any other. This sixth parameter can be referenced as two additional monochrome bits (bmc0, bmc1) for the quad. [0143] In this case, by accumulating the information from tmc, bmc1 and bmc0, a total of 3x2x2 = 12 possibilities is available which, again, can be determined with robustness to extreme color degradation. These 12 possibilities or values can be used to increase the number of possible second numerical values ( Code B), although it is proposed to use them as checksum of the values encoded by the triples, to detect possible errors in the decoding, that is, as a redundancy system. for the detection of errors in the decoding of Code B. [0145] In some examples, the seventh parameter can take a value of 0, 1 or 2 (although it can be others) depending on the color not chosen from the plurality of colors. Thus, if we start from the same example as the one used for the triples, the seventh parameter can take, for example, the value 0 if the discarded color is cyan, the value 1 if the discarded color is magenta, and the value 2 if the discarded color is yellow. Obviously any discarded value / color combination is acceptable. This seventh parameter can be referred to as additional chromatic trit (tcc) of the quatern. [0147] According to some examples, the eighth parameter can take a value of 0 or 1 (although it could be others) depending on whether or not the order coincides with the pre-established order of the colors of the plurality of colors. Thus, for example, the eighth parameter can take the value 0 if the order matches the preset order (for example, cyan <magenta <yellow) or the value 1 if the order is not coincident, or vice versa. This eighth parameter can be referred to as an additional chromatic bit (bcc). [0148] Once again, also in this case 2x3 = 6 possibilities or different values are obtained for each pair of specific values (bcc, tcc), which can be used as checksum to control possible decoding errors of, in this case, the first numerical value or Code A, since the decoding of these information items (bcc, tcc) depends on the correct identification of the plurality of colors (for example, cyan, magenta and yellow). Consequently, its determination is not as robust as the items of monochrome information described above, for the different combinations corresponding to Code B. [0150] In summary, only by correctly identifying the positions of the light and dark values (for example, black and white respectively) in the triple / s and in the quad / s, is it possible to encode a certain number of different possibilities (it depends on the number of triples and quaternities established in the cell matrix), controlled by a checksum. These possibilities form the so-called second numerical value or Code B, robust to color degradation. If, in addition, one has the ability to correctly determine the colors of the plurality of colors (for example, cyan, magenta and yellow), it is possible to have another determined number, such as Code A, of possibilities or values, controlled by another checksum . [0152] On the other hand, if one of these groups of four cells is, in the code reading position, in the upper left corner of the cell array and the rest of the corners have L-shaped triples, a procedure of rotation invariant encoding. This means that even if the code appears rotated in the captured image, at any of the four possible angles of rotation of a square (0, 90, 180, or 270 degrees), the decoding procedure can easily determine which corner is the one corresponding to the upper left, that is, to the quadrant of cells. This is due to the fact that, of the four triples of cells corresponding to the four corners, only the cells that are part of the first row and the first column of the fourth necessarily contain two light and / or dark colors, compared to the others. three corners, in which one and only one color of the cells of the corresponding triple can have a light or dark color. This property is important in order to be able to decode the visual codes in any relative position of these with respect to the camera, regardless of the specific turning position with respect to it with which they are being viewed at all times. [0155] In some examples, groups of three cells can encode the information, while groups of four cells can implement the system for detecting errors in decoding the visual code. Other configurations are also possible, such that both the triples and the four encode information and, therefore, an error detection system is not implemented. [0157] According to another aspect, a computer program product is provided. The computer program product comprises program instructions to cause a system to perform a procedure to generate a visual code, such as that described above. The computer program may be stored on physical storage media, such as recording media, computer memory, or read-only memory, or it may be carried by a carrier wave, such as electrical or optical. [0159] In accordance with another aspect, a system is provided for generating a visual code, such as that described above. The system comprises: [0160] • means of obtaining the number of rows and columns of the cell array; [0161] • means for determining the combination of one or more groups of three cells and / or one or more groups of four cells suitable for the obtained number of rows and columns of the cell array; [0162] • means of obtaining the information to be encoded; [0163] • means to encode the information and / or implement the redundancy system for the detection of errors in the decoding of the visual code, based on the following configuration: [0164] or for each group of three cells of the given combination: [0165] ■ means to assign a light color or a dark color to one of the cells of the group of three cells, defining a first parameter that takes a default value that depends on whether the color assigned to the cell is light color or dark color, and defining a second parameter that takes a predetermined value that depends on the cell, of the group of three cells, to which the light color or the dark color is assigned; [0166] ■ means of assigning two colors of the plurality of colors, not including the light color and the dark color, to the two remaining cells of the group of three cells, defining a third parameter that takes a predetermined value that depends on at least one color not chosen from the plurality of colors, and defining a fourth parameter that takes a predetermined value that [0169] it depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors; [0170] or for each group of four cells of the given combination: [0171] ■ means to assign a light color and / or a dark color to two of the three cells that make up the first row and the first column of the group of four cells, defining a fifth parameter that takes a default value that depends on the cell that does not it is assigned a light color or a dark color, and a sixth parameter is defined that takes a predetermined value that depends on the combination of light color and / or dark color assigned to the two cells; [0172] ■ means of assigning two colors of the plurality of colors, not including the light color and the dark color, to the two remaining cells of the group of four cells, defining a seventh parameter that takes a default value that depends on at least one color not chosen from the plurality of colors, and an eighth parameter being defined that takes a predetermined value that depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors. [0174] According to yet another aspect, a system is provided for generating a visual code. This system is configured to: [0175] • obtain the number of rows and columns in the cell matrix; [0176] • determine the combination of one or more groups of three cells and / or one or more groups of four cells suitable for the obtained number of rows and columns of the cell matrix; [0177] • obtain the information to be encoded; [0178] • encode the information and / or implement the redundancy system for the detection of errors in the decoding of the visual code, based on the following configuration: or for each group of three cells of the determined combination: [0179] ■ assign a light color or a dark color to one of the cells of the group of three cells, defining a first parameter that takes a default value that depends on whether the color assigned to the cell is light color or dark color, and defining a second parameter that takes a predetermined value that depends on the cell, of the group of three cells, to which the light color or the dark color is assigned; [0182] ■ assign two colors of the plurality of colors, which does not include the light color and the dark color, to the two remaining cells of the group of three cells, defining a third parameter that takes a default value that depends on at least one color not chosen of the plurality of colors, and defining a fourth parameter that takes a predetermined value that depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors; [0183] or for each group of four cells of the given combination: [0184] ■ assign a light color and / or a dark color to two of the three cells that make up the first row and the first column of the group of four cells, defining a fifth parameter that takes a default value that depends on the cell that is not assigned a light color or a dark color, and defining a sixth parameter that takes a predetermined value that depends on the combination of light color and / or dark color assigned to the two cells; [0185] ■ assign two colors of the plurality of colors, which does not include the light color and the dark color, to the two remaining cells of the group of four cells, defining a seventh parameter that takes a default value that depends on at least one color not chosen of the plurality of colors, and defining an eighth parameter that takes a predetermined value that depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors. [0187] According to another aspect, a system is provided for generating a visual code. The system comprises a memory and a processor. The memory stores computer program instructions executable by the processor. The instructions comprise functionalities for executing a procedure to generate visual code, such as that described above. [0189] According to another aspect, a method is provided for decoding a visual code such as that described above. This visual code is encoded according to a procedure for generating a visual code also described above. The decoding procedure comprises: [0190] - Obtain an image comprising at least one visual code to be decoded; [0191] - Locate in the image obtained at least one candidate code; [0192] For each candidate code located: [0193] - Extract the color of each cell of the candidate code; [0194] - Decode the coded information and / or the redundancy system to detect errors based on the color extracted from each cell. [0196] Obtaining the image can be done by means of an image capture device of the system to decode a visual code, which will be described later, or it can be obtained in the form of an image previously captured by another device that the system collects or receives from it. or from another device that stores it. [0198] In some examples, locating each candidate code in the image may include: [0199] • Apply an algorithm of dynamic thresholding of the image, which takes into account the possible different lighting conditions in different areas of the capture; [0200] • Apply a closed contour extraction algorithm on the binarized image resulting from applying the thresholding algorithm; [0201] • Reduce the closed contours extracted, using a polygonal approximation; [0202] • Verify which of the reduced contours are projectively equivalent to a square, obtaining, for each contour projectively equivalent to a square, a candidate code. [0204] The polygonal approximation can follow, for example, the procedure described in ["Algorithms for the reduction of the number of points required to represent a digitized line origins caricature", David Douglas & Thomas Peucker, The Canadian Cartographer 10 ( 2), 112- 122, ( 1973)]. [0206] In addition, the dynamic image thresholding algorithm can use an adaptive threshold, which calculates the value of a different threshold for each image position, depending on the distribution of gray values of a small image region around each pixel. , as described, for example, in ["Local Adaptive Thresholding." Li SZ, Jain A. ( eds) Encyclopedia of Biometrics. Springer " ( 2009)]. [0208] In some examples, locating each candidate code in the image may comprise correcting for radial distortion in the image introduced by the image capture element. It should be said that the correction of the possible radial distortion introduced by the camera may not in principle be necessary, since the codes are explicitly designed to be small and be viewed from a long distance. However, for close viewing (for example, with a Smartphone or smartphone located near the code), a pre-correction of said distortion may have to be carried out in some cases, especially for wide-angle lenses. [0210] In some examples, extracting the color of each cell from a candidate code may include: [0211] • Perform a homographic rectification of the original image, using the four corners of the contour of the candidate code, to a square canonical frame of sufficient size; [0212] • Obtain, from the rectified image, a cell matrix with a simple color vector (R, G, B) in each cell; [0213] • Obtain a single RGB vector value per cell from the obtained cell matrix, using a median filter to eliminate possible sensor noise; [0214] the result obtained being a tensor of a certain number of values (the number of values depends, for example, on the size of the cell matrix), with a vector (R, G, B) with values between [0,0,0 ] and [255,255,255] for each cell. [0216] On the other hand, the square canonical frame can be, for example, 100x100 pixels in size. [0218] In some examples, extracting the color from each cell of the candidate code may comprise performing a sub-pixel alignment of each contour of the candidate code. [0220] According to some examples, obtaining, from the rectified image, a cell matrix with a simple color vector (R, G, B) in each cell may comprise performing a white balance using the light and dark colors of the background itself and of the frame, respectively, as calibration elements, whose positions in the rectified image are already fully known. [0222] On the other hand, the median filter can be wide enough to consistently cover the center of each cell in its corresponding area of the rectified image, without invading the rest of the contiguous cells of the cell array. [0225] In some examples, decoding the encoded information and / or the redundancy system for error detection based on the color extracted from each cell may comprise: [0226] • Determine the correct orientation of the cell array; [0227] • Decode each group of three cells, checking that the restrictions are met regarding each group of three cells having a single cell of a light or dark color, understood as a monochromatic restriction, and the rest of the cells are of colors different from each other, of the plurality of colors, understood as a color restriction; [0228] • Decode each group of four cells, checking that the restrictions are met regarding the fact that, in the reading position of the visual code, two of the cells in each group of four cells, of the three that form the first row and the first column , are each of a light color and / or a dark color, understood as a monochromatic restriction, and the remaining two are of different colors from each other, of a plurality of colors that does not include the light color and the dark color, understood as a color restriction; [0229] • If the monochromatic restriction of the groups of three cells and / or the groups of four cells is not fulfilled, discard the candidate code; [0230] • If the color restriction for groups of three cells and / or groups of four cells is not met, [0231] or discard the first numeric value ( Code A); [0232] o Obtain the second numerical value ( Code B) that is determined from values obtained from the cells based on their color in a gray scale, from the groups of three cells; [0233] o Obtain the redundancy value of the second numerical value ( Code B) from values obtained from the cells of a light color or a dark color of the groups of four cells; [0234] o Check the redundancy value obtained, with the second numerical value ( Code B) obtained, to detect errors in the reading; [0235] o If the check is not correct, discard the second numerical value ( Code B ) obtained; [0236] o If the check is correct, provide the second numerical value ( Code B) obtained; [0237] • If the monochromatic and chromatic constraints for groups of three cells and / or groups of four cells are met, [0238] o Obtain the first numerical value ( Code A) that is determined from values obtained from the cells of a light color or of a dark color and of the colored cells within the plurality of colors, of the groups of three cells; [0239] o Obtain the redundancy value of the first numerical value ( Code A) from values obtained from the cells of a light color or a dark color and from the colored cells within the plurality of colors, from the groups of four cells ; [0240] o Check the redundancy value obtained, with the first numerical value ( Code A) obtained, to detect errors in the reading; [0241] o If the check is not correct, discard the first numerical value ( Code A ) obtained; [0242] o If the check is correct, provide the first numerical value ( Code A ) obtained; [0243] o Obtain the second numerical value ( Code B) that is determined from values obtained from the cells based on their color in a gray scale, from the groups of three cells; [0244] o Obtain the redundancy value of the second numerical value ( Code B) from values obtained from the cells of a light color or a dark color of the groups of four cells; [0245] o Check the redundancy value obtained, with the second numerical value ( Code B) obtained, to detect errors in the reading; [0246] o If the check is not correct, discard the second numerical value ( Code B ) obtained; [0247] o If the check is correct, provide the second numerical value ( Code B) obtained. [0249] According to some examples, decoding the encoded information and / or the redundancy system for the detection of errors based on the color extracted from each cell can include, if the first numerical value ( Code A ) and the second numerical value ( Code B): [0250] • Obtain the third numerical value ( Code C) from values obtained from all cells of a light color or of a dark color in the cell matrix; [0251] • Provide the third numerical value ( Code C) obtained. [0254] Therefore, only in the event that the reading of both Codes A and B failed, a simple Code C value (third numerical value) could be returned, as a hash, with a much smaller range than Codes A and B, which no longer has any redundancy system for error detection, and which is used as a last resort in extreme lighting conditions, working only on a binary version (0/1) of the input image. [0256] According to another aspect, a computer program product is provided. The computer program product comprises program instructions to cause a system to perform a procedure to decode a visual code, such as that described above. The computer program may be stored on physical storage media, such as recording media, computer memory, or read-only memory, or it may be carried by a carrier wave, such as electrical or optical. [0258] According to another aspect, a system is provided for decoding a visual code, such as that described above. The visual code has been coded by a system to generate a visual code also described. The decoding system comprises: [0259] - Means for obtaining an image comprising at least one visual code to be decoded; [0260] - Means to locate each candidate code in the image obtained; [0261] - Means to extract the color of each cell of the candidate code; [0262] - Means to decode the coded information and / or the redundancy system for the detection of errors based on the color extracted from each cell. [0264] In accordance with yet another aspect, a system is provided for decoding a visual code, such as that described above. The visual code has been coded by a system to generate a visual code also described. The decoding system is configured to: [0265] - Obtain an image comprising at least one visual code to be decoded; [0266] - Locate each candidate code in the image obtained; [0267] For each candidate code located: [0268] - Extract the color of each cell of the candidate code; [0269] - Decode the coded information and / or the redundancy system to detect errors based on the color extracted from each cell. [0271] According to another aspect, a system is provided for decoding a visual code, such as that described above. The visual code has been coded by a system to generate a [0274] visual code also previously described. The system comprises a memory and a processor. The memory stores computer program instructions executable by the processor. These instructions comprise functionalities for executing a procedure to decode a visual code, as previously described. [0276] Other objects, advantages, and characteristics of embodiments of the invention will become apparent to the person skilled in the art from the description, or can be learned by practice of the invention. [0278] BRIEF DESCRIPTION OF THE DRAWINGS [0280] In the following, particular embodiments of the present invention will be described by way of non-limiting example, with reference to the attached drawings, in which: [0282] Figure 1 schematically shows an example of visual code, using a specific size of 4x4 cell matrix and five different colors (white (B), black (N), cyan (C), magenta (M) and yellow (A)) , and a width of the black frame equal to that of a cell. [0284] Figure 2 schematically shows an example of visual code equivalent to that of Figure 1, but with a smaller border, in particular with a width equal to half the width of a cell. [0286] Figure 3 schematically shows an example of visual code for a 4x4 matrix, identifying the four triples ta, tb, tc and td, as well as the fourth c. [0288] Figure 4 schematically shows the visual code of the example in Figure 1, highlighting the different triples and the quatern. [0290] Figure 5 schematically shows an example of visual code for a 5x5 matrix, identifying the seven triples ta, tb, tc, td, te, tf and tg, as well as the fourth c. [0292] Figure 6 shows a flow diagram of a procedure for decoding a visual code, more specifically for reading the numerical codes associated with the visual code, in three main blocks: location of candidate codes, generation of tensor and decoding by levels. [0293] Figure 7 schematically shows an application scenario, in which one or more cameras, connected to an intranet, send the images captured in a certain area of a plant to a central computer system, where they are processed. Circulating through the plant there are, for example, mobile trucks carrying some type of product on which a label with one of the visual codes has been attached. [0295] DETAILED EXHIBITION OF IMPLEMENTATION MODES [0297] One of the objectives of the present invention is the design of a multi-color visual code together with the corresponding automated encoding and decoding procedures from images taken with a suitable capture device. The code itself consists of a square matrix of colors (although it can take other shapes such as rectangular or hexagonal) surrounded by a dark outline or frame, such as black. It is explicitly designed for the code to be robustly decoded under potentially problematic capture conditions, such as increasing color gradations and loss of resolution that occur when moving away from the capture device (which comprises, for example, an optical sensor) the code to identify, and / or significantly vary the lighting conditions. [0299] To achieve this objective, the code obtains a compromise between the ability to encode information and the robustness to be detected at potential long distances. This compromise is obtained by representing three different numerical values, which from now on will be called Code A (first numerical value), Code B (second numerical value) and Code C (third numerical value), each of which is recognized using different interpretation procedures on the code. Thus, Code A offers greater expressiveness (greater number of possible combinations) than Code B and, in turn, Code B offers a more informative value than Code C. In contrast, the robustness in the determination of each code is inversely proportional to the capacity, with Code B and Code C supporting certain types of color degradation and other types of image noise incrementally better. [0301] Going into detail in the design of a visual code according to the invention, Figure 1 shows the general appearance of an example code 101, using a specific size of 4x4 cells 103 of five different colors (white (B), black ( N), cyan (C), magenta (M) and yellow [0304] (A)), and a width of the black frame 102 equal to that of a cell, all on a white background. It is only a specific embodiment of the invention, other variants being also possible, with a different number and arrangement of cells, as well as a greater or lesser border width. The same happens at the level of colors. It can be any combination, but it may be appropriate to choose three colors that are as far apart as possible in the RGB cube, such as, for example, the above combination (cyan, magenta and yellow) or the combination of red, green and blue. You can also vary the color of the frame, which can be any dark color but with the black color it is possible to maximize the contrast with the white background, which facilitates the detection of the marker. The background can be a much lighter color than the frame rectangle, to again maximize the contrast with the frame. [0306] Both Figure 1 and the rest of the figures are intended to illustrate different examples of visual codes and procedures for encoding and decoding these codes, and in no case should they be understood as limits to the scope of their application. Thus, for example, Figure 2 shows an equivalent code, but with a smaller border (width equal to half the width of a cell), while Figure 5 shows a visual code with a matrix of 5x5 cells to increase encoding capability, albeit at the cost of a possible loss of viewing range. Likewise, the colors of the visual code are not limited to the exposed white (B), black (N), cyan (C), magenta (M) and yellow (A). In particular, other well-differentiated chromatic triples could replace the colors C, M and A (for example, by the colors red, green and blue) to the extent that the test of belonging to each of these colors can be determined with the procedure free of thresholds and calibration cells that will be described later in the corresponding section. [0308] Thus, from now on, an example of a visual code of 4x4 cells and colors B, N, C, M and A of Figure 1 is used, without implying any loss of generality in the description, or of limitation in the claims of the invention. [0310] This visual code is structured by blocks or groups of four and / or three cells as shown in Figure 3. Only one block 301, located in the upper left corner of the matrix, is formed by a quatern of cells c1, c2 , c3, c4, that is, a group of four cells, while the rest of the cells are grouped into four groups 302,303,304,305, of three cells each, corresponding to the triples (ta1, ta2, ta3), (tb1, tb2, tb3), (tc1, tc2, tc3), and (td1, td2, td3), respectively. Both the triples and the quatern have a series of [0313] restrictions on the colors to be occupied by each cell. In particular, a triple can have one and only one cell of a color other than C, M or A (that is, it always has a cell B or a cell N), while the other two cells must necessarily be of two different colors chosen from the set {C, M, A}. As for the quatern, the rules are slightly different: two of the three cells {c1, c2, c3} (those that are in contact with the frame) must be colored B and / or N, while the remaining two , that is, c4 and the only cell in the set {c1, c2, c3} that is not of color B or N, are again necessarily of two different colors, chosen from the set {C, M, A}. As can be seen, the example code shown in Figure 1 perfectly complies with the specified construction rules. [0315] Taking into account the previous restrictions, and by construction, given any triple, one and only one of its cells can have a color N or a color B. This color defines a first bit (which we will call "monochromatic bit", or bm ) of said shortlist. The convention can be followed of taking this bit as 0 for color N, and as 1 for color B, although it could be the other way around. Said cell B or N, therefore, is necessarily in one and only one of the three positions of the triple, which will give rise to a second item of information, which in this case can take three different values, and which is assigned can be called "monochromatic trit", or tm, of the triple. In the present example, a trit equal to 0 is associated if the B / W color is in the first cell of the triple, 1 if it is in the second, or 2 if it is in the third, although this association could be different . This makes a total of 2x3 = 6 different possibilities for each triple, namely (bm, tm) = {(0,0), (1,0), (0,1), (1,1), (0, 2), (1,2)}. Since in the present example there are a total of four triples, that is, ta, tb, tc and td, this makes a total of 6A4 = 1296 different possibilities that, more importantly, can be decoded even under lossy conditions. absolute color information, simply requiring, yes, that cell B or N can be correctly located in each triple. But, by the general construction procedure described for the code, this is always possible, since the other two cells necessarily have a color C, M or A, and those colors always show a difference of mean gray value greater than what shows the B or N element with its corresponding calibrated B or N color, the latter obtained directly from the outside and inside the black frame on the white background of the input image. The 1296 possibilities described are those that make up the corresponding Code B of each visual code. [0317] Next, it is described how it is possible to use the color of the two remaining cells of each triple to add more information. Again, by the designated construction rule previously, these two remaining cells have to be of two different colors chosen from the set {C, M, A}. The discarded color is used to encode a new information trit, which in this case can be called the "chromatic trit", or tc, of the triple. The chosen convention is tc = 0, if color C is discarded, tc = 1, if color M is discarded, or tc = 2, if color A is discarded, although this assignment may be different. [0319] Finally, the order in which the two remaining colors appear in the triad mark a last bit of information, which can be referred to as the "chromatic bit" of the triad, or bc. Thus, if said pair of colors appear, in order of reading by positions of the triple, in an order consistent with the order predefined by convention as C <M <A (although the order may be different), then it can be established that bc = 0. Otherwise, bc = 1 is set. Again, 2x3 = 6 different possibilities are obtained for specific values (bc, tc) that, taking advantage of the combinatorial induced by the existence of the four triples ta, tb, tc and td, lead to other 6A4 = 1296 additional possibilities, which they are also completely independent of the previous monochromatic combinations (bm, tm). [0321] The combination of monochrome and chromatic information gives a combination of 6 A 4 * 6 A 4 = 1296 * 1296 = 6A8 = 1,679,616 different combinations, which make up as many different Code A's. In this case, however, it does depend on the correct chromatic identification of the colors C, M and A, so that the determination (that is, the decoding) of the specific combination is less robust to possible chromatic degradations of the input image, so that these 1296 additional possibilities are not used for the determination of Code B, but only of Code A. [0323] Next, the description of the coding procedure that is followed for the quatern of the upper left corner c1, c2, c3, c4 is made. In this case, as mentioned above, two and only two of the colors of cells c1, c2, c3 of the quad that border the frame are color B and / or N. This configuration or restriction leads to the existence of an additional monochromatic first trit for this quatern, referred to as tmc, with a value of 0, 1 or 2 if, respectively, the cell with a color other than B or N is c1, c2 or c3 (although any other order can be established). Furthermore, the four combinations NN, NB, BN and BB for the other two cells serve to encode two additional monochrome bits for the quatern, which can be referenced as bmc0 and bmc1, with respective values (bmc1, bmc0) = {(0,0 ), (0,1), (1,0) and (1,1)} for said combinations (these combinations may have other assignments than those cited in the present example). [0326] In this case, therefore, accumulating the information from tmc, bmcl and bmc0, a total of 3 * 2 * 2 = 12 possibilities are available, which again can be determined robustly to extreme chromatic degradations, in a way analogous to what occurs with the bm and tm values of each triple of cells. These 12 values can be used to increase the number of different possible Code B's , although, instead, it is proposed to use them as a checksum of the 1296 possible values encoded by the triples, as a procedure for detecting possible errors. The exact computation procedure of the proposed checksum will be described later. [0328] The information that can be encoded using the two remaining cells of the quad, that is, those that take two different values to B and / or N, is described below. Since these two cells must again take on two different colors chosen from the set {C, M, A}, in a way that is absolutely analogous to what happens in each triple, these two cells define an additional chromatic trit, which can be referred to as tcc , with tcc = 0 if color C is discarded, tcc = 1 if M is discarded, or tcc = 2 if A is discarded (although this assignment, in some examples, may be different). Finally, and again in an analogous way, an additional chromatic bit, which can be referred to as bcc, has value bcc = 0 if said pair of colors appear, in order of reading by positions of the quatern, in an order consistent with the predefined order by convention as C <M <A, or bcc = 1 if the opposite occurs. Once again, there are 2 * 3 = 6 different possibilities for each pair of specific values 15 (bcc, tcc), which is used again as a checksum to control possible decoding errors of, in this case, Code A , since the decoding of these information items depends on the correct identification of the colors C, M and A. Therefore, their determination is not as robust as the monochrome information items described above for the different combinations corresponding to the Code B. [0330] Consequently, from everything described it follows that only correctly identifying the positions of the B and N values in the four triples 302,303,304,305 (see Figure 3), as well as in the positions c1, c2 and c3 of the quatern 301, is it It is possible to encode up to 1296 different possibilities, controlled by a checksum with 12 different values. These possibilities form the so-called Code B, robust to color degradation. If, in addition, the remaining C, M and A colors can be correctly determined, then there are, additionally, 1296 other possibilities independent of the previous ones, and controlled in this case by a checksum of only six different values. Together with the completely independent information from Code B, it can be seen that this situation leads to the total of [0333] 1296 * 1296 = 1,679,616 different possibilities mentioned above, with a corresponding checksum of 6 * 12 = 72 possible values. Each of these possibilities are those corresponding to a different valid Code A , which, of course, is not robust to chromatic degradation such that it does not allow the correct identification of colors C, M and A. [0335] Next, the exact weights assigned to each of the bits and trits defined on the triples are described to assign a specific number between 0 and 1,679,615 to Code A, as well as a specific number between 0 and 1295 to Code B, both corresponding to a concrete visual code that follows the established construction rules. Referencing bm_i / tm_i / bc_i / tc_i, with i = a, b, c or od for the triples ta, tb, tc and td, respectively, the number of Code B, N_B corresponding to a given visual code responds to the formula: [0337] N_B = bm_a + 2 * bm_b + 4 * bm_c + 8 * bm_d 16 * ( tm_a + 3 * tm_b + 9 * tm_c + 27 * tm_d) ( eq.1) [0339] Similarly, it is possible to define the number of Code A, N_A, as follows: [0341] N_A = 6 * 4 * N_H N_B = 1296 * N_H N_B ( eq.2) [0343] with: [0345] N_H = bc_a + 2 * bc_b + 4 * bc_c + 8 * bc_d 16 * ( tc_a + 3 * tc_b + 9 * tc_c + 27 * tc_d) ( eq.3) [0347] With these definitions it is achieved that consecutive codes are continuously varying N_B, giving a complete turn to their possible 1296 different values before repeating themselves. This can have certain advantages in industrial environments, where it is of interest that the sequence of B-Codes corresponding to sequentially generated visual codes are repeated as widely as possible, in order to achieve the maximum possible disambiguation capacity between labels for which only N_B (but not N_A) could be reliably determined. [0349] Finally, the corresponding checksums (redundancy codes) contained in the quad can be defined as follows: [0351] C_B = 11 -N_B% 12 ( eq.4) [0352] Y: [0354] C_A = 5 - N_H% 6 ( eq.5) [0356] with: [0358] C_B = 4 * tmc 2 * bmc1 + bmc0 ( eq.6) [0360] Y: [0362] C_A = 2 * tcc bcc ( eq.7) [0364] To finish the description of the coding procedure, a concrete example is presented below that will help to understand the entire proposed procedure. [0366] If we take, for example, the value N_A = 1,234,567. From ( eq. 2), it follows that N_B = N_A % 6A4 = N_A % 1296 = 775, while N_H = N_A / 6A4 = N_A / 1296 = 952 (using integer division at all times). According to ( eq.1), then, the monochrome bits of the four triples, ( bm_a, bm_b, bm_c, bm_d), must encode the number N_B % 16 = 775% 16 = 7. Since bm_a is the least significant bit , and bm_d the most, it follows that ( bm_a, bm_b, bm_c, bm_d) = ( 1,1,1,0). Regarding the monochromatic trits ( tm_a, tm_b, tm_c, tm_d), and again according to ( eq.2), they must encode the number N_B / 16 = 775/16 = 48. But the number 48 expressed in base 3 is exactly ( 1210) 3, since 48 = 1 * 27 + 2 * 9 + 1 * 3 + 0 * 1, and therefore, following the convention that the trit tm_a is the one with the lowest weight, and tm_d the one with the greatest, it is concluded what: [0368] ( tm_a, tm_b, tm_c, tm_d) = ( 0,1,2,1). [0370] Finished the procedure with the monochromatic bits and trits, we now continue with the chromatic ones. The procedure is completely analogous to the previous one used for N_B, only with the value N_H. According to ( eq.3), then, we have that the chromatic bits of the four triples, ( bm_a, bm_b, bm_c, bm_d), must encode the number N_H % 16 = 952% 16 = 8. Since bc_a is the bit of less weight, and bc_d the most, it follows that ( bc_a, bc_b, bc_c, bc_d) = ( 0,0,0,1). Regarding the chromatic trits ( tc_a, tc_b, tc_c, tc_d), and again according to ( eq.3), they must [0373] encode the number N_H / 16 = 952/16 = 59. The number 59 expressed in base 3 is (2102) 3, since 59 = 102 * 27 + 0 * 9 + 1 * 3 + 2 * 1, and therefore, Following the agreement that the trit tc_a is the one with the lowest weight, and tc_d the one with the greatest weight, it is concluded that (tc_a, tc_b, tc_c, tc_d) = ( 2,1,0,2). [0375] The monochromatic and chromatic bits and trits corresponding to the checksum are finally calculated. By ( eq.4) it follows that C_B = 11 - N_B% 12 = 11 - 15775% 12 = 4, from where, by ( eq.6), ( tmc, bmc1, bmc0) = ( 1,0,0) . Similarly, from ( eq.5) we have that C_A = 5 - N_H% 6 = 5 - 952% 6 = 1, from where, by ( eq.7), ( tcc, bcc) = ( 0,1). [0377] In summary, it has been deduced that, for Code A 1,234,567, the corresponding Code B is 775, and the corresponding monochromatic and chromatic bits and trits are: [0379] ( bm_a, bm_b, bm_c, bm_d) = ( 1,1,1,0) [0380] ( tm_a, tm_b, tm_c, tm_d) = ( 0,1,2,1) [0381] ( bc_a, bc_b, bc_c, bc_d) = ( 0,0,0,1) [0382] ( tc_a, tc_b, tc_c, tc_d) = ( 2,1,0,2) [0383] ( tmc, bmc1, bmc0) = ( 1,0,0) [0384] ( tcc, bcc) = ( 0,1) [0386] By passing these bits and trits to colors, according to the previously defined schemes, it can be verified that the resulting color code is exactly the one defined in Figure 1. Thus, it can be verified in said figure (and remembering the distribution of tuples shown in the Figure 3) that the B / W colors of the triples ( ta, tb, tc, td) are colors (B, B, B, N), as corresponds to ( bm_a, bm_b, bm_c, bm_d) = ( 1, 1,1,0). Likewise, it can be verified that the positions of said colors B and N are in cells ( ta1, tb2, tc3, td2), which corresponds to ( tm_a, tm_b, tm_c, tm_d) = ( 0,1,2,1). The pairs of colors chosen from the set {C, M, A} in the triples ( ta, tb, tc, td) are, in literacy order, (CM, CA, MA, MC). Since (C <M, C <A, M <A, M> C), that corresponds exactly to ( bc_a, bc_b, bc_c, bc_d) = ( 0,0,0,1). Furthermore, the colors of the set {C, M, A} missing in the triples ( ta, tb, tc, td) are, respectively, (A, M, C, A), as corresponds to the values ( tc_a, tc_b, tc_c, tc_d) = ( 2,1,0,2). As for the quatern of the upper left corner, the two cells of colors B and / or N of the same are both of color N, which are in the positions c1 and c3, so that tmc = 1 (for being free c2 , from the set {c1, c2, c3}), and ( bmc1, bmc0) = ( 0,0), since they are a pair of cells both of color N. Finally, the colors of the two remaining cells, c2 and c4 , are respectively A and M. The missing color in this pair is C, as corresponds to the trit tcc = 0, and it happens that A> M, as corresponds to bcc = 1. [0388] An advantage of the described coding scheme is that it is completely invariant to rotations, by construction. This means that even if the code appears rotated in the captured image, in any of the four possible angles of rotation of a square (0, 90, 180 or 270 degrees), the decoding procedure can easily determine correctly which corner is the one corresponding to the upper left, that is, to the quadrant of cells (c1, c2, c3, c4). And this is due to the fact that of the four triples of cells corresponding to the four corners, only the triplet (c1, c2, c3) (see Figure 3) necessarily contains two colors B and / or N, compared to the other three corners, in which one and only one color of the cells of the corresponding triple can have a B or N color. This property is important to be able to decode the visual codes in any relative position of these with respect to the camera, regardless of the rotation position with respect to it with which they are being viewed at all times. [0390] In the example described, a specific cyclic redundancy code (CRC) has been chosen, of a simple modular checksum type, to carry out a relatively simple error control. However, some examples could include other types of alternative solutions that are equally capable of detecting (for example, with parity digits, hash functions, etc.) or even correcting ( Reed Solomon codes, Turbo codes, etc.) possible errors. in the decoding process, dedicating more bits / trits to said error control, at the cost of reducing the number of valid codes. Likewise, if one wanted to increase the number of valid combinations, at the cost of reducing the ability to detect and / or correct errors, it could also be decided to dedicate fewer bits / trits to error control. For example, if the quatern (c1, c2, c3, c4) of Figure 3 were fully dedicated to containing data, instead of as checksum, the number of valid Codes A and Codes B would become, respectively, 2 * 6 ** 10 = 120,932,352 and 2 * 6 ** 5 = 15,552. However, in that case, the protection offered by the checksum against possible errors in the decoding process would not be available. [0392] Once a label with a specific code has been printed on paper, adhesive, plastic, fabric, or another type of support that can be attached by any means to any type of asset (products, materials, people, etc.) on which you want to make monitoring or traceability, it is necessary to describe the procedure to correctly locate and decode the code from an image in which it appears visible. A possible scenario of The application would be the one shown in Figure 7, which will be described in detail later, where a series of one or more cameras 701, connected to an intranet 705, send the images captured in a certain area of a plant to a central computer system 706 or server, where they are processed. Circulating through the plant there could be, for example, 702 mobile trucks carrying some type of 703 product on which a label with one of the 704 codes has been attached. It is possible that several codes appear in the same image, as well as that, simultaneously , several cameras capture the same code or set of codes at any given moment. An image processing computer program installed on the server must process each input image to correctly detect and decode each and every code visible in each processed image. Next, the stages involved in said processing are described, the global scheme of which is shown in Figure 6. [0394] The processing algorithm begins with the exact location 601 in the scene (captured image) of each candidate code. To do this, we first proceed with a dynamic image thresholding algorithm, which takes into account the possible different lighting conditions in different areas of the input image. An adaptive threshold is used in the example, which calculates the value of a different threshold for each position of the image, depending on the distribution of gray values of a small image region around each pixel, as described, by For example, in ["Local Adaptive Thresholding." Li SZ, Jain A. ( eds) Encyclopedia of Biometrics. Springer " ( 2009)]. Next, we proceed with an algorithm for extraction of closed contours on the resulting binarized image, which are subsequently reduced by means of a polygonal approximation (for example, following the procedure described in [“Algorithms for the reduction of the number of points required to represent a digitized line orits caricature ", David Douglas & Thomas Peucker, The Canadian Cartographer 10 ( 2), 112-122, ( 1973)]). Only those contours that pass a test of being projectively equivalent to a square go to the next stage. It is important to note that the correction of a possible radial distortion introduced by the camera is not considered necessary in principle, since the codes are explicitly designed to be small and to be viewed from a long distance. However, for their close viewing ( for example, with a smartphone or smartphone located close to the code), it may be necessary in some cases to perform a correction of such distortion, especially for wide-angle type lenses. [0397] In a second processing stage 602, and after an optional sub-pixel alignment of each extracted contour or frame, its four corners are used to perform a homographic rectification of the original image to a square canonical frame of sufficient size, for example (of new without loss of generality) of 100x100 pixels. Next, this rectified image is treated with various algorithms with the intention of obtaining a 4x4 cell matrix with a simple color vector (R, G, B) in each cell, as faithful as possible to the original colors. To do this, a white balance is (optionally) carried out using the black and white colors of the edges (whose positions in the rectified image are already fully known) as calibration elements. Then, using a median filter to remove possible camera sensor noise, a single RGB vector value per cell is obtained. Said filter has a sufficient width to consistently cover the center of each cell in its corresponding area of the rectified image, without invading the rest of the contiguous cells. The final result of this stage is a tensor of (4x4x3) values, with a vector (R, G, B) with values between [0,0,0] and [255,255,255] for each cell. [0399] The third and final stage 603 of processing begins with the determination of the correct orientation of the 4x4 color matrix, which is simple given the aforementioned restriction that only the three cells of the upper left quadrant glued to the edge (c1, c2 and c3 in Figure 3) can contain exactly two colors B and / or N. Thus, the other three of the four possible orientations can be eliminated. Once the color matrix is correctly oriented, we proceed to decode triple by triple, checking for each one that all the restrictions imposed by the design of the code are met: that is, that each triple (ta1, ta2, ta3), (tb1, tb2, tb3), (tc1, tc2, tc3) and (td1, td2, td3) (see Figure 3) contains exactly only one of the B or N colors, and two different colors from the set {C, M, A} in the other two cells. If not, in any of the triples, a consistency error is considered, which may be due to the monochromatic restriction (one B or N cell in each triplet), or to the color restriction (two different colors of the set {C, M ,TO}). If the first occurs, the contour is automatically discarded, without returning any of the Code A or Code B values. If the second occurs, producing a Code A is discarded, but it continues to try to produce a Code B. The next step, if the contour or frame has not already been discarded, is to compute Codes A and B (or only B, if applicable), using equations (eq.1), (eq.2) and (eq .3), once the corresponding bits and trits per triplet have been determined, according to the coding scheme described above. Therefore, it only remains to generate the checksum values for Codes A and B, contained in the colors of the cells (c1, c2, c3, c4) of Figure 3 according to the scheme also described, and check its correctness. Again, however, it could happen that there was a consistency error in the quatern (c1, c2, c3, c4) (that is, there were not exactly two cells in it of colors B and / or N, and the other two of two different colors extracted from the set {C, M, A}). In that case, if the first error occurs, it would be ruled out to return neither of the two Codes A or B, while if only the second occurs, only Code A would be discarded, but the procedure for Code B would be continued. [0401] In another case, the corresponding values of the computed checksums , C_A and C_B will be determined from equations (eq.6) and (eq.7), and their correction will be checked for the respective Codes A and B, checking if they are given. the equalities (eq.5) and (eq.4), respectively. [0403] If the correctness of Code A and its corresponding checksum have been verified, the decoding procedure returns this Code A as detected for the current contour. If, on the contrary, the checksum of A is incorrect, or any of the chromatic consistency tests fail for any of the triples or the quatern of cells, then only Code B is returned as detected, assuming, of course, that it is they passed all the monochromatic consistency tests for the triples and the quatern of cells, and that the corresponding checksum for it is correct. Finally, and only in the event that the reading of both codes fails, a simple Code C value could be returned, as a hash, with a much smaller range than Codes A and B, which no longer have a CRC. none to control possible errors, and which is used as a last resort in extreme lighting conditions, working only on a binary version (0/1) of the input image. [0405] The computation of this last resort hash value is described below, the use of which is restricted to possible matching tasks within a small subset of previously known codes. [0407] In any case, all the processing described for the second 602 and third 603 stages is repeated as long as there is any candidate square contour detected by the first stage 601 remaining. [0408] Use scenarios can be considered in which it is previously known that the visual code to be recognized cannot be any one, but is necessarily found in a more limited predetermined (and previously known) subset of codes. For example, it could be known, by the particularities of the production process, that in a plant only a reduced set of, for example, 100 different codes could circulate in a given period of time. If these codes are previously known, the problem of their decoding does not start, like the procedure described above, from absolute ignorance, but rather there is certain a priori information that could be exploited to detect said codes even under lighting conditions and / or extremely challenging picture shooting. It is in this scenario where the existence of the Code C of last resort can be useful. This code will be computed only in case of previously failed detection of Codes A and B. It is based only on the location of cells N in the 4x4 matrix, and is determined in the manner described below. By numbering the cells of said matrix in literacy order, with an index i = 0 for the top left cell, and i = 15 for the bottom right, it is assigned to each of the 4x4 = 16 cells the corresponding weight 2Ai. The resulting Code C will be the sum of the weights corresponding to all cells for which a color N was determined. [0410] Naturally, in this situation where only the cells of color N could be located, but there was not even a complete monochrome consistency (that is, even the possible locations of the white cells are unknown), it is not possible to be sure of have correctly corrected the possible rotation of the template, bringing the control quad to the correct position, in the upper left corner (see Figure 3). That is why, to make Code C invariant to rotation, this value is actually calculated for the four possible rotations of the template, performing the four corresponding binary interpretations, and selecting the largest of these four interpretations as the definitive Code C. [0412] Again, the computation of this Code C is shown below using the example visual code shown in Figure 4. In this figure, when correctly oriented, the positions of the colored cells N in the template are, using the order of literacy, those corresponding to cells i = 0 (row 1, column 1), i = 5 (row 2, column 1) and i = 14 (row 4, column 3). The value corresponding to the sum of the weights of the corresponding powers of two will therefore be 2A0 2A5 2A14 = 16417. However, it is necessary to repeat the procedure for the other three possible orientations, since a priori the [0415] exact rotation that the template appears in the input image. It can be easily verified that, for the 90, 180 and 270 degree rotations of the matrix in Figure 4, the corresponding values of i are {i = 7, i = 12, i = 13} (which produces a value 2A7 2A12 2A13 = 12416), in the first case, {i = 1, i = 11, i = 15} (which produces a value 2A1 2A11 2A15 = 34818), in the second case, and {i = 2, i = 3, i = 8} (which produces a value 2A2 2A3 2A8 = 268), in the third case. The maximum of the four values {16417, 12416, 34818, 268} is 34818, so that, finally, the latter is the Code C value returned as a last resort hash value, to be compared with the hashes for each of the possible candidate codes of the input set. [0417] There are still a couple of important final considerations regarding the computation of Code C. The first is that the configuration of the positions of the ones could be inconsistent, under any of the four rotations, with the code construction rules. For example, a code that contained two or more cells of color N in two or more corners would be clearly inconsistent with the construction rules discussed above. In the same way, it is also impossible, for example, that three of the four central cells of the 4x4 matrix are of color N, due to the restrictions on the tuples also exposed previously. In this way, before returning a Code C as a possible hash, a last consistency check of the pattern of cells considered as N is carried out for its computation according to the above. If this last check does not pass either, the code is completely discarded (Figure 6, block 603). [0419] The second important consideration is that the hash value obtained for Code C is obviously not unique for each original Code A. That is, it causes collisions (several Codes A, or even several Codes B, different can give rise to the same valid Code C ). This is the reason why, although ultimately it may be useful to reduce ambiguity, it is not always valid to uniquely determine the detected code from among a possible set of candidate input codes, depending, of course, on the specific values of the same. [0421] As a next matter, the following describes, within the decoding procedure, the specific process for determining the specific color of each cell, within the total subset of colors used {B, N, C, M, A}. A couple of important characteristics of the invention are that a) said color determination is carried out by a process that is free of any threshold, and b) that it does not need to enable cells that are have to be used as calibration. The first characteristic makes the procedure more robust, as it does not depend on manually adjusted thresholds (it is, on the contrary, a completely self-thresholding procedure). The second feature avoids the cost that would have in terms of loss of the number of possible combinations of having to use part of the visual code cells for said control cells (scheme that, on the other hand, follow some of the exposed color codes and described above, thus losing them to encode the data). Eliminating this need is particularly important to make the codes as small as possible (in number of cells), in the context of detection with long-range robustness that is pursued in the industrial applications for which the codes may be designed. [0423] In the first place, the description is made for the monochromatic procedure, destined to correctly locate the positions of cells B and N both in the triplets and in the quadrant of checksums. For the specific case of a triple, for example, simply take that cell whose color vector (R, G, B), in any type of well-defined distance measure (for example, Euclidean, or Manhattan), is more close to either of the two control vectors (R, G, B) extracted from the pixels of the inner edge (for color N; inner edge to 101 in Figure 1) or outer (for color B; outer edge to 101 in Figure 1) of the image itself, in the environment of the initially extracted four-sided polygon, and which act as the only calibration colors initially available. It is important to note that, in this way, it is avoided having to add additional color control cells (that is, calibration) to the visual code matrix, since the same inner (N) and outer (B) edges used for the detection of the code itself (step 601 in the algorithm of Figure 6) can perfectly play this role. The case of the quatern is absolutely similar, only that, due to its construction, there must be two cells (and not just one) of colors B and / or N, they are the two cells with a distance less than either of the two colors. base extracted from the edges which are labeled with the corresponding colors B and / or N. Note that, being based on a comparison of distances with two colors observed from the image itself, rather than on any specific predetermined thresholding values, the process is resistant to practically any type of lighting variation of the scene typically possible. (except extreme cases of glare or practically total darkness). [0425] As for the pair of different colors chosen from the set {C, M, A}, for the other two cells of the corresponding triple / quadrant, it is also determined with a procedure again free of thresholds and all kinds of exterior color calibration information. For this, the two remaining cells after determining the position and type (B / W) of the monochromatic control cell are simply calculated the minimum of their R, G or B value. If said minimum is in channel R, the color assigned to it is C. Similarly, a color M or A is assigned if said minimum is reached in channels G or B, respectively. Note that, again, by using a minimum value in a comparison (instead of a comparison with a specific predetermined threshold), the procedure is again resistant to variations in light intensity, which in principle affect all parameters equally. channels. Also, in case of opting for the color set {R, G, B} instead of {C, M, A} (a possible variant mentioned above), the procedure can be easily modified to detect the new color set , in this case attending not to the minimum of the three channels (R, G, B) of the cell, but, of course, to the maximum of them. [0427] However, the procedure could eventually fail in light situations that are far from white light, which is not usually a problem in industrial environments, except in very specific cases, or in conditions in which the correct sensorization of the color is very problematic, as can be the case in situations close to glare, or alternatively excessive darkening of the label comprising the code, as can be produced, for example, by strong backlights in the scene. It is for these cases that the alluded color inconsistencies are probably detected in the decoding procedure (processing step 603 in Figure 6), such as two of the colors of a tuple being the same, instead of always different, or that, later on, the checksum of the corresponding Code A fails. Once again, it is in these cases that Code B, however, can be determined by not depending in any case on any color other than B or the N pure. [0429] It should also be noted that, once those cells are determined whose difference between the smallest channel of the three (R, G, B) and the other two is greater, said cell can be taken as the canonical color C, M or A for the entire code, and act, in addition to being an information item, also as a calibration item, that is, as a reference for the other cells. This is equivalent, in a certain way, to locating the pixels "more cyan" (that is, with a greater difference between R and min (G, B)), "more magenta" (with a greater difference between G and min ( R, B)) and "more yellow" (with greater difference between B and min (R, G)) of the entire matrix, and take them as canonical, that is, as calibration cells, to compare the rest of the colors of the cells with them, by means of a conventional distance measure. In this way, and still [0432] By keeping the global scheme free of thresholds and the need for cells used only for calibration, it is possible to solve even some additional cases in which certain areas of the visual code may have suffered chromatic degradation greater than others. [0434] Figure 7 shows an example of the implementation of the entire proposed code generation, detection and decoding scheme, specifically on the main plant of a company dedicated to the production and packaging of fresh produce of fruit and vegetable origin. The specific application scenario is the correct location and monitoring in time and space of pallets loaded with products, which are unloaded at the company docks, and monitored from the moment they enter the packaging plant. For this, the boxes with the products are labeled already at the time of their collection in the field, with visual codes such as those described, in a clearly visible place on them. [0436] This implementation example uses the two specific variants of the code described in this document: first, the color version {B, N, C, M, A} in a 4x4 cell matrix, with labels printed in color (example of Figure 1); and second, a version of the 5x5 cell matrix code (shown in Figure 5), only, in this particular case, instead of a five-color code, a monochrome version with only three colors is used, {B, Gr, N}, where Gr is an intermediate gray level located between the values B and N. In this last particular implementation, therefore, the color code is discarded from the start (substituting all the values C, M and A for Gr in the visual codes generated), with which the described procedure always fails, by construction, in determining Code A (chromatic), although the decoding of Code B (monochromatic) is perfectly feasible. It happens that, given the greater number of triples of this variant (seven triples ta, tb, tc, td, te, tf, tg in Figure 5), Code B, being extremely robust to the most varied light conditions, and operating even in black and white imaging, it still allows 6A7 = 279,936 different possibilities, controlled by its corresponding checksum of the quadrant in the upper left corner, which continues to take a value in the range [0..11]. [0438] The sensorization system proposed for this example has a variable number of cameras, interconnected to the company's main network using Gigabit Ethernet technology. In this particular implementation, cameras with resolutions of up to 3840x2160 pixels and 60 frames per second, and variable zoom optics that allow viewing angles between 37 ° and 109 ° horizontally are used. [0439] As soon as they enter the warehouse, the boxes 703 with the products from the loading docks, already duly labeled 704, are transported by palletizing trucks 702 inside the packaging plant. The cameras 701, mounted at certain key points in the plant, continuously monitor the evolution of the trucks, sending the captured images continuously to a central server 706, through a dedicated Intranet 705, whose bandwidth (1 Gbps) allows, in combination with an adequate image compression factor, the simultaneous sending of several video sequences at tens of frames per second from multiple cameras. The cameras used in the present example are equipped with their own CPU and memory to compress the video in real time, using Zipstream technology. This technology uses an H.262 codec with variable bit-rate, which allows a speed in fps and bandwidth controllable from the central server. [0441] At this point it is important to note that the communication between the cameras and the central server can be done wired (with cables) or wirelessly. In the case of a wired (wired) communication, the connection can be made through serial ports, such as USB, micro USB, mini USB, Firewire or Ethernet (such as the Intranet described above). In the case of wireless communications, the connection can be made using short-range wireless communications modules (cameras and server are close enough), for example, Bluetooth, NFC, Wifi, IEEE 802.11 or Zigbee. If the communications are long-range (the cameras and the server are far apart), the connection can be made using communication modules based on GSM, GPRS, 3G, 4G, 5G technology or satellite technology (for example, if the communication is made through a global communication network, such as the Internet) or even through a communications network for the Internet of Things ( loT - Internet of Things). To secure the communication between the cameras and the server, this communication can be ensured by, for example, username / password, cryptographic keys and / or by means of an SSL tunnel established in the communication. [0443] Each time a new image arrives at the server 706, it processes it through an implementation of the algorithm described in Figure 6, locating and decoding, where appropriate, all the visual tags detected in the scene. Its implementation has been carried out in the Python language, in its version 3.6, making use of the OpenCV (version 3.4) and Numpy (version 1.14) libraries for all the functions related to the image process: [0446] thresholding, contour extraction and polygonization, homographic alignment and rectification, white balance, noise suppression filters and the final decoding process of the color code. The interaction with the rest of the applications and databases relevant to the company's production control and traceability system is done through a REST API specifically designed for this, which is supported by the Flask library (version 0.12). Said Python code is executed, in this particular implementation, on a server with an 8-core i7 CPU and 16 GB of RAM. The performance obtained depends on the resolution of the input images, being in the order of (taking a specific example) about 20 milliseconds per frame for an input resolution of 1920x1080, being able to detect several codes (for example, up to 6) per image ( without there being a strict limit in this sense either). [0448] The viewing distance and correct decoding depend on both the focal length of the camera (and therefore its field of vision) and the image resolution used, but in this specific environment it is possible to state that the observed limit Recognition robustness for Code A is approximately a minimum of 3x3 pixels for each cell in the input image. This corresponds to approximately ~ 18x18 pixel sizes for a full 4x4 type code, including a border width equal to that of a cell, as in the example version of Figure 1, or a few pixels less for frame sizes. lower frame, as shown in the example in Figure 2. [0450] Properly playing with variable zoom optics, and depending of course on the physical print size of the label, this equates to possible decoding distances of even tens of meters. The following table shows some concrete example scenarios: [0452] [0455] All the above possibilities actually respond to the following general formula: [0458] PIX = TC * RH / (2000 * D * tan (AVH / 2)) (eq.8) [0460] where: [0462] PIX = Resulting size of the visual code in the image (in pixels). [0463] TC = Size of the printed visual code (in mm). [0464] RH = Horizontal resolution of the image (in pixels). [0465] D = Distance from the camera to the label (in meters). [0466] AVH = Camera horizontal angle of view (in degrees). [0468] In theory, and restricted to cameras with the optics mentioned above, this also makes it possible to detect and decode printed codes at a size, for example, 200 mm wide at distances greater than 60 meters (for the viewing angle corresponding to the largest zoom). supported by camera optics, 37 °, and its highest resolution, 3840x2160 pixels). Of course, by mounting telephoto lenses with higher focal lengths (and therefore a lower angle of view), these decoding distances can be further increased. In the specific scenario of the example described, however, in no case is a configuration of such characteristics necessary, opting for smaller sizes in the final implementation, with visual codes printed at 80 mm wide and viewing distances typically less than 10 m. At all times, the system shows a good tolerance to different noise sources that translate into different causes of loss of sharpness in the image, such as point blurring, rapid movements in the scene, "salt and pepper" noise in the sensorized image motivated due to low lighting conditions, and even artifacts caused by image compression. [0470] It is important to note that both the encoding procedure and the decoding procedure described above can each be implemented with a system with a fully computerized, fully electronic configuration, or by a combination of both. [0472] In the case that a system is purely computer (for example, a computer server), the system may comprise a memory and a processor (for example, a microprocessor), in which the memory stores computer program instructions executable by the processor, these instructions comprising functionalities for executing a procedure for decoding or a procedure for encoding a visual code such as those described. [0474] The memory of this computer system may be within the processor or it may be external. If it is included in the processor itself, it can be, for example, an EEPROM type memory or the like. In the case that it is external, it can be, for example, data storage media such as magnetic discs (for example, hard drives), optical discs (for example, DVD or CD), memory cards, flash memories ( for example, flash drives) or solid state drives (RAM-based, flash-based, etc.). These storage means can be part of the computer system itself and / or can be arranged remotely to it, connected by wire (with cables) or wirelessly. In the case of a wired (wired) communication, the connection can be made through serial ports, such as USB, micro USB, mini USB, Firewire or Ethernet. In the case of wireless communications, the connection can be made using short-range wireless communications modules (the system and the storage media are close enough), for example, Bluetooth, NFC, Wifi, IEEE 802.11 or Zigbee. If the communications are long-range (the system and the storage media are far apart), the connection can be made using communication modules based on GSM, GPRS, 3G, 4G, 5G technology or satellite technology (for example, if the communication it is carried out through a global communication network, such as the Internet) or even through a communications network for the Internet of Things ( loT -In te rneto f Things). In the latter case of a system with remote storage means, the communication established between the system and the storage means can be ensured by, for example, username / password, cryptographic keys and / or by means of an SSL tunnel established in communication between the system and the storage media. [0476] Therefore, the set of computer program instructions (a computer program) executable by the processor can be stored in physical storage media, such as those mentioned, but can also be carried by a carrier wave (the carrier medium can be any entity or device capable of carrying the program), such as electrical or optical, which can be transmitted via electrical or optical cable or by radio or other means. Thus, when the computer program is contained in a signal [0479] which can be transmitted directly by means of a cable or other device or medium, the carrier medium can be constituted by said cable or other device or medium. [0481] Alternatively, the carrier medium may be an integrated circuit in which the computer program is embedded , said integrated circuit being adapted to perform or to be used in performing the relevant procedures. [0483] The computer program may be in the form of source code, object code, or in a code intermediate between source code and object code, such as partially compiled form, or in any other form suitable for use in implementing the described procedures. [0485] On the other hand, at least one of the systems (the one that executes the encoding procedure and / or the one that executes the decoding procedure) can have a purely electronic configuration, so it could be formed by a programmable electronic device such as a CPLD ( Complex Programmable Logic Device), an FPGA ( Field Programmable Gate Array) or an ASIC ( Application-Specific Integrated Circuit). [0487] Finally, at least one of the systems can also have a hybrid configuration between computing and electronics. In this case, the system must comprise a memory and a processor to computerically implement a part of its functionalities, as well as certain electronic circuits to implement the rest of the functionalities. [0489] Although only some particular embodiments and examples of the invention have been described herein, the skilled person will understand that other alternative embodiments and / or uses of the invention are possible, as well as obvious modifications and equivalent elements. Furthermore, the present invention encompasses all possible combinations of the specific embodiments that have been described. The numerical signs relative to the drawings and placed in parentheses in a claim are only to attempt to increase the understanding of the claim, and should not be construed as limiting the scope of protection of the claim. The scope of the present invention should not be limited to specific embodiments, but should be determined solely by a proper reading of the appended claims. 4
权利要求:
Claims (48) [1] 1. Visual code (101) comprising a two-dimensional array of cells (103) and a frame (102) of a dark color that surrounds the array of cells, characterized in that the array of cells comprises at least one of: • one or more groups of four cells (301; 401) in which: or the cells are arranged in two rows and two columns, or in the visual code reading position, two of the cells of each group of four cells, of the three (c1, c2, c3) that make up the first row and the first column, are each one of a light color and / or a dark color, and the remaining two are of different colors from each other, of a plurality of colors that does not include the light color and the dark color; • one or more groups of three cells (302,303,304,305; 402,403,404,405) in which: or each group comprises three connected cells aligned or L-shaped, or each group of three cells has a single cell of a light color or a dark color and the rest of the cells are of different colors from each other, out of the plurality of colors; in which the groups of cells encode information and / or implement a redundancy system for the detection of errors in the decoding of the visual code. [2] Visual code (101) according to claim 1, comprising a background of a light color external to the frame (102) of a dark color. [3] Visual code (101) according to any one of claims 1 or 2, in which the width of the frame (102) of a dark color is equal to the width of a cell (103). [4] Visual code (101) according to any one of claims 1 or 2, in which the width of the dark-colored frame (102) is half the width of a cell (103). [5] Visual code (101) according to any one of claims 1 to 4, comprising, in the visual code reading position, a group (301; 401) of four cells (c1, c2, c3, c4) arranged in the upper left corner of the cell array. [6] A visual code (101) according to claim 5, comprising a group (302,304,305) of three cells connected in an L shape at each of the remaining corners of the cell array. [7] Visual code (101) according to any one of claims 1 to 6, in which the plurality of colors comprises at least three of the following colors: • cyan; • magenta; • yellow; • Red; • green; • blue. [8] Visual code (101) according to any one of claims 1 to 7, in which the plurality of colors are represented in a gray scale. [9] Visual code (101) according to any one of claims 1 to 8, in which a dark color is black. [10] Visual code (101) according to any one of claims 1 to 9, in which a light color is white. [11] Visual code (101) according to any one of claims 1 to 10, in which the cell matrix (103) has the same number of rows as of columns. [12] Visual code (101) according to claims 1 to 11, in which the information encoded by the groups of cells comprises at least a first numerical value that is determined from values obtained from cells of a light color or of a dark color and of the colored cells within the plurality of colors, of the groups (302,303,304,305) of three cells. [13] Visual code (101) according to any one of claims 1 to 12, in which the information encoded by the groups of cells comprises at least one second numerical value that is determined from values obtained from the cells based on their color in a grayscale, of the groups (302,303,304,305) of three cells. 1 [14] Visual code (101) according to any one of claims 1 to 13, in which the information encoded by the groups of cells comprises at least a third numerical value that is determined from values obtained from all cells of a color light or dark color from the cell array. [15] Visual code (101) according to any one of claims 1 to 14, in which the redundancy system for detecting errors in decoding the visual code is implemented from values obtained from cells of a light color or of a dark color and of the colored cells within the plurality of colors, of the groups (301; 401) of four cells, to detect errors in the decoding of the first numerical value. [16] Visual code (101) according to any one of claims 1 to 14, in which the redundancy system for detecting errors in the decoding of the visual code is implemented from values obtained from cells of a light color or a dark color of the groups (301; 401) of four cells, to detect errors in the decoding of the second numerical value. [17] 17. Method for generating a visual code (101) according to any one of claims 1 to 16, comprising: • obtain the number of rows and columns of the cell matrix (103); • determine the combination of one or more groups (302,303,304,305; 402,403,404,405) of three cells and / or one or more groups (301; 401) of four cells suitable for the obtained number of rows and columns of the cell matrix; • obtain the information to be encoded; • encode the information and / or implement the redundancy system for the detection of errors in the decoding of the visual code, based on the following configuration: or for each group of three cells of the determined combination: ■ assign a light color or a dark color to one of the cells of the group of three cells, defining a first parameter that takes a default value that depends on whether the color assigned to the cell is light color or dark color, and defining a second parameter that takes a predetermined value that depends on the cell, of the group of three cells, to which the light color or the dark color is assigned; ■ assign two colors from the plurality of colors, which does not include the light color and the dark color, to the remaining two cells of the group of three cells, two defining a third parameter that takes a predetermined value that depends on at least one color not chosen from the plurality of colors, and defining a fourth parameter that takes a predetermined value that depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors; or for each group of four cells of the given combination: ■ assign a light color and / or a dark color to two of the three cells that make up the first row and the first column of the group of four cells, defining a fifth parameter that takes a default value that depends on the cell that is not assigned a light color or a dark color, and defining a sixth parameter that takes a predetermined value that depends on the combination of light color and / or dark color assigned to the two cells; ■ assign two colors of the plurality of colors, which does not include the light color and the dark color, to the two remaining cells of the group of four cells, defining a seventh parameter that takes a default value that depends on at least one color not chosen of the plurality of colors, and defining an eighth parameter that takes a predetermined value that depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors. [18] 18. Method according to claim 17, in which the first parameter takes a value of 0 or 1 depending on whether the color assigned to the cell is the light color or the dark color. [19] 19. Method according to any one of claims 17 or 18, in which the second parameter takes a value of 0, 1 or 2 depending on whether the cell to which the light color or the dark color is assigned, in the reading position in the code, it is the first cell, the second cell, or the third cell in the group of three cells. [20] 20. Method according to any one of claims 17 to 19, in which the third parameter takes a value 0, 1 or 2 depending on the color not chosen from the plurality of colors. [21] 21. Method according to any one of claims 17 to 20, in which the fourth parameter takes a value of 0 or 1 depending on whether or not the order coincides with the pre-established order of the colors of the plurality of colors. [22] 22. Method according to any one of claims 17 to 21, in which the fifth parameter takes a value of 0, 1 or 2 depending on whether the cell to which the light color is not assigned or the dark color, in position of Reading the code, it is the first cell, the second cell or the third cell of the three cells that make up the first row and the first column of the group of four cells. [23] 23. Method according to any one of claims 17 to 22, in which the sixth parameter takes a value {(0,0), (0,1), (1,0), (1,1)} depending on the combination of light color and / or dark color assigned to the two cells. [24] 24. Method according to any one of claims 17 to 23, in which the seventh parameter takes a value 0, 1 or 2 depending on the color not chosen from the plurality of colors. [25] 25. Method according to any one of claims 17 to 24, in which the eighth parameter takes a value of 0 or 1 depending on whether or not the order coincides with the pre-established order of the colors of the plurality of colors. [26] 26. Method according to any one of claims 17 to 25, in which the groups (302,303,304,305; 402,403,404,405) of three cells encode the information, while the groups (301; 401) of four cells implement the redundancy system for detection errors in decoding the visual code. [27] 27. Computer program product comprising program instructions for causing a system to perform a method according to any one of claims 17 to 26 to generate a visual code (101). [28] 28. A computer program product according to claim 27, which is stored on a recording medium. [29] 29. A computer program product according to claim 27, which is carried by a carrier signal. 4 [30] 30. System for generating a visual code (101) according to any one of claims 1 to 16, comprising: • means for obtaining the number of rows and columns of the cell matrix (103); • means for determining the combination of one or more groups (302,303,304,305; 402,403,404,405) of three cells and / or one or more groups (301; 401) of four cells suitable for the obtained number of rows and columns of the cell matrix; • means of obtaining the information to be encoded; • means to encode the information and / or implement the redundancy system for the detection of errors in the decoding of the visual code, based on the following configuration: or for each group of three cells of the given combination: ■ means to assign a light color or a dark color to one of the cells of the group of three cells, defining a first parameter that takes a default value that depends on whether the color assigned to the cell is light color or dark color, and defining a second parameter that takes a predetermined value that depends on the cell, of the group of three cells, to which the light color or the dark color is assigned; ■ means of assigning two colors of the plurality of colors, not including the light color and the dark color, to the two remaining cells of the group of three cells, defining a third parameter that takes a predetermined value that depends on at least one color not chosen from the plurality of colors, and a fourth parameter being defined that takes a predetermined value that depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors; or for each group of four cells of the given combination: ■ means to assign a light color and / or a dark color to two of the three cells that make up the first row and the first column of the group of four cells, defining a fifth parameter that takes a default value that depends on the cell that does not it is assigned a light color or a dark color, and a sixth parameter is defined that takes a predetermined value that depends on the combination of light color and / or dark color assigned to the two cells; ■ means of assigning two colors of the plurality of colors, not including the light color and the dark color, to the remaining two cells of the group of four cells, defining a seventh parameter that takes a predetermined value that depends on at least one color not chosen from the plurality of colors, and defining an eighth parameter that takes a predetermined value that depends on the order of the two colors assigned to the cells, in based on a preset order of the colors of the plurality of colors. [31] 31. System for generating a visual code (101) according to any one of claims 1 to 16, the system being configured to: • obtain the number of rows and columns of the cell matrix (103); • determine the combination of one or more groups (302,303,304,305; 402,403,404,405) of three cells and / or one or more groups (301; 401) of four cells suitable for the obtained number of rows and columns of the cell matrix (103); • obtain the information to be encoded; • encode the information and / or implement the redundancy system for the detection of errors in the decoding of the visual code, based on the following configuration: or for each group of three cells of the determined combination: ■ assign a light color or a dark color to one of the cells of the group of three cells, defining a first parameter that takes a default value that depends on whether the color assigned to the cell is light color or dark color, and defining a second parameter that takes a predetermined value that depends on the cell, of the group of three cells, to which the light color or the dark color is assigned; ■ assign two colors of the plurality of colors, which does not include the light color and the dark color, to the two remaining cells of the group of three cells, defining a third parameter that takes a default value that depends on at least one color not chosen of the plurality of colors, and defining a fourth parameter that takes a predetermined value that depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors; or for each group of four cells of the given combination: ■ assign a light color and / or a dark color to two of the three cells that make up the first row and the first column of the group of four cells, defining a fifth parameter that takes a default value that depends on the cell that is not assigned a light color or a dark color, and defining a sixth parameter that takes a predetermined value that depends on the combination of light color and / or dark color assigned to the two cells; ■ assign two colors of the plurality of colors, which does not include the light color and the dark color, to the two remaining cells of the group of four cells, defining a seventh parameter that takes a default value that depends on at least one color not chosen of the plurality of colors, and defining an eighth parameter that takes a predetermined value that depends on the order of the two colors assigned to the cells, based on a pre-established order of the colors of the plurality of colors. [32] 32. System for generating a visual code (101) according to any one of claims 1 to 16, the system comprising a memory and a processor, wherein the memory stores computer program instructions executable by the processor, these instructions comprising functionalities for executing a method according to any one of claims 17 to 26 to generate a visual code. [33] 33. Method for decoding a visual code (101) according to any one of claims 1 to 16, encoded according to a method for generating a visual code according to any one of claims 17 to 26, the decoding method comprising: - Obtain an image comprising at least one visual code to be decoded; - Locate (601) in the image obtained at least one candidate code; For each candidate code located: - Extract (602) the color of each cell of the candidate code; - Decode (603) the coded information and / or the redundancy system for the detection of errors based on the color extracted from each cell. [34] 34. Method according to claim 33, in which locating (601) in the image each candidate code comprises: • Apply an algorithm of dynamic thresholding of the image, which takes into account the possible different lighting conditions in different areas of the capture; • Apply a closed contour extraction algorithm on the binarized image resulting from applying the thresholding algorithm; • Reduce the closed contours extracted, using a polygonal approximation; 7 • Verify which of the reduced contours are projectively equivalent to a square, obtaining, for each contour projectively equivalent to a square, a candidate code. [35] 35. The method of claim 34, wherein the dynamic image thresholding algorithm uses an adaptive threshold. [36] 36. Method according to any one of claims 34 or 35, in which locating (601) in the image each candidate code comprises: • Correct radial distortion in the image introduced by the image capture element. [37] 37. Method according to any one of claims 33 to 36, in which extracting (602) the color of each cell of a candidate code comprises: • Perform a homographic rectification of the original image, using the four corners of the contour of the candidate code, to a square canonical frame of sufficient size; • Obtain, from the rectified image, a cell matrix with a simple color vector (R, G, B) in each cell; • Obtain a single RGB vector value per cell from the obtained cell matrix, using a median filter to eliminate possible sensor noise. [38] 38. The method of claim 37, wherein extracting (602) the color of each cell of the candidate code comprises: • Perform a sub-pixel alignment of each contour of the candidate code. [39] 39. Method according to any one of claims 37 or 38, in which obtaining, from the rectified image, a cell matrix with a simple color vector (R, G, B) in each cell comprises: - Perform a white balance using the background and frame's own light and dark colors, respectively, as calibration items. [40] 40. The method according to any one of claims 37 to 39, wherein the median filter has a width sufficient to consistently cover the center of each cell in the corresponding area of the rectified image, without invading the rest of the contiguous cells of the cell array. [41] 41. Method according to any one of claims 33 to 40, in which decoding (603) the coded information and / or the redundancy system for the detection of errors based on the color extracted from each cell comprises: • Determine the correct orientation of the cell array; • Decode each group of three cells, checking that the restrictions are met regarding each group of three cells having a single cell of a light or dark color, understood as a monochromatic restriction, and the rest of the cells are of colors different from each other, of the plurality of colors, understood as a color restriction; • Decode each group of four cells, checking that the restrictions are met regarding the fact that, in the reading position of the visual code, two of the cells in each group of four cells, of the three that form the first row and the first column , are each of a light color and / or a dark color, understood as a monochromatic restriction, and the remaining two are of different colors from each other, of a plurality of colors that does not include the light color and the dark color, understood as a color restriction; • If the monochromatic restriction of the groups of three cells and / or the groups of four cells is not fulfilled, discard the candidate code; • If the color restriction for groups of three cells and / or groups of four cells is not met, or discard the first numeric value ( Code A); o Obtain the second numerical value ( Code B) that is determined from values obtained from the cells based on their color in a gray scale, from the groups of three cells; o Obtain the redundancy value of the second numerical value ( Code B) from values obtained from the cells of a light color or a dark color of the groups of four cells; o Check the redundancy value obtained, with the second numerical value ( Code B) obtained, to detect errors in the reading; o If the check is not correct, discard the second numerical value ( Code B ) obtained; o If the check is correct, provide the second numerical value ( Code B) obtained; • If the monochromatic and chromatic constraints for groups of three cells and / or groups of four cells are met, o Obtain the first numerical value ( Code A) that is determined from values obtained from the cells of a light color or of a dark color and of the colored cells within the plurality of colors, of the groups of three cells; o Obtain the redundancy value of the first numerical value ( Code A) from values obtained from the cells of a light color or a dark color and from the colored cells within the plurality of colors, from the groups of four cells ; o Check the redundancy value obtained, with the first numerical value ( Code A) obtained, to detect errors in the reading; o If the check is not correct, discard the first numerical value ( Code A ) obtained; o If the check is correct, provide the first numerical value ( Code A ) obtained; o Obtain the second numerical value ( Code B) that is determined from values obtained from the cells based on their color in a gray scale, from the groups of three cells; o Obtain the redundancy value of the second numerical value ( Code B) from values obtained from the cells of a light color or a dark color of the groups of four cells; o Check the redundancy value obtained, with the second numerical value ( Code B) obtained, to detect errors in the reading; o If the check is not correct, discard the second numerical value ( Code B ) obtained; o If the check is correct, provide the second numerical value ( Code B) obtained. [42] 42. Method according to claim 41, in which the decoding (603) of the encoded information and / or the redundancy system for the detection of errors based on the color extracted from each cell comprises, if the first numerical value is discarded ( Code A ) and the second numeric value ( Code B): • Obtain the third numerical value ( Code C) from values obtained from all cells of a light color or of a dark color in the cell matrix; • Provide the third numerical value ( Code C) obtained. [43] 43. Computer program product comprising program instructions for causing a system to perform a method according to any one of claims 33 to 42 for decoding a visual code. [44] 44. A computer program product according to claim 43, which is stored on a recording medium. [45] 45. A computer program product according to claim 43, which is carried by a carrier signal. [46] 46. System for decoding a visual code (101) according to any one of claims 1 to 16, encoded by a system for generating a visual code according to any one of claims 30 to 32, the decoding system comprising: - Means for obtaining an image comprising at least one visual code to be decoded; - Means to locate each candidate code in the image obtained; - Means to extract the color of each cell of the candidate code; - Means to decode the coded information and / or the redundancy system for the detection of errors based on the color extracted from each cell. [47] 47. System for decoding a visual code (101) according to any one of claims 1 to 16, encoded by a system for generating a visual code according to any one of claims 30 to 32, the decoding system being configured to: - Obtain an image comprising at least one visual code to be decoded; - Locate (601) in the image obtained each candidate code; For each candidate code located: - Extract (602) the color of each cell of the candidate code; - Decode (603) the coded information and / or the redundancy system for the detection of errors based on the color extracted from each cell. 1 [48] 48. System for decoding a visual code (101) according to any one of claims 1 to 16, encoded by a system for generating a visual code according to any one of claims 30 to 32, the decoding system comprising a memory and a processor , wherein the memory stores computer program instructions executable by the processor, these instructions comprising functionalities for executing a method according to any one of claims 33 to 42 for decoding a visual code. two
类似技术:
公开号 | 公开日 | 专利标题 ES2750536T3|2020-03-26|Data transmission using optical codes CN101978380B|2015-11-25|Two-dimensional symensional symbol and read method thereof US8194973B2|2012-06-05|Decoding information from a captured image ES2823232T3|2021-05-06|Marker generation system and method FI121901B|2011-05-31|Detecting and tracking objects in digital images US9530215B2|2016-12-27|Systems and methods for enhanced depth map retrieval for moving objects using active sensing technology ES2239744T3|2005-10-01|SYSTEM OF DETECTION OF BAR CODES AND CORRESPONDING METHOD. CN103339642A|2013-10-02|Machine-readable symbols CN103776392A|2014-05-07|3D geometric modeling and 3d video content creation US8727221B1|2014-05-20|Color micro bar code marker and system KR101821087B1|2018-01-22|Two-dimensional code, and two-dimensional-code analysis system EP3200120B1|2021-07-28|Enhanced matrix symbol error correction method US20140209685A1|2014-07-31|Covert bar code pattern design and decoding US8919649B2|2014-12-30|Method for the detection of a marker affixed to the surface of an object and system for implementing same ES2817652B2|2021-10-19|VISUAL CODE, PROCEDURE TO GENERATE A VISUAL CODE AND PROCEDURE TO DECODE A VISUAL CODE ES2754612T3|2020-04-20|Recognition procedure of raised characters, corresponding computer program product and device ES2817926B2|2021-11-12|VISUAL CODE AND PROCEDURE TO ENCODE AND DECODE A TWO-DIMENSIONAL IMAGE RU2729399C1|2020-08-06|Method for detection and recognition of visual markers of long range and high density CN105894069B|2019-02-26|A kind of generation method and recognition methods of the CRC two dimensional code of vision guided navigation KR101109510B1|2012-01-31|Method for recognising two-dimensional barcode CA3092189A1|2019-10-17|Method and system for optical product authentication Tian et al.2020|Polartag: Invisible data with light polarization KR102375325B1|2022-03-16|Method for detection and recognition of distant high-density visual markers US9286695B2|2016-03-15|Systems and methods for tracking points within an encasement US11250589B2|2022-02-15|General monocular machine vision system and method for identifying locations of target elements
同族专利:
公开号 | 公开日 WO2021064272A1|2021-04-08| ES2817652B2|2021-10-19|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 US20090310874A1|2008-06-13|2009-12-17|Dixon Brad N|Decoding information from a captured image| US20120145779A1|2009-04-08|2012-06-14|Continental Teves Ag & Co. Ohg|Two-dimensional symbol code and method for reading the symbol code| US20130092738A1|2011-10-12|2013-04-18|University Of Rochester|Color Barcodes for Mobile Applications: A Per Channel Framework| EP2806377A2|2013-05-24|2014-11-26|King Abdulaziz City for Science and Technology|OK CODE: A Multidimensional Color Barcode|
法律状态:
2021-04-07| BA2A| Patent application published|Ref document number: 2817652 Country of ref document: ES Kind code of ref document: A1 Effective date: 20210407 | 2021-10-19| FG2A| Definitive protection|Ref document number: 2817652 Country of ref document: ES Kind code of ref document: B2 Effective date: 20211019 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 ES201930860A|ES2817652B2|2019-10-04|2019-10-04|VISUAL CODE, PROCEDURE TO GENERATE A VISUAL CODE AND PROCEDURE TO DECODE A VISUAL CODE|ES201930860A| ES2817652B2|2019-10-04|2019-10-04|VISUAL CODE, PROCEDURE TO GENERATE A VISUAL CODE AND PROCEDURE TO DECODE A VISUAL CODE| PCT/ES2020/070598| WO2021064272A1|2019-10-04|2020-10-02|Visual code, method for generating a visual code and method for decoding a visual code| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|